Код IT Загрузка примера кода…

C# main.cs
using Microsoft.EntityFrameworkCore;
using Npgsql;
using S3MediaManager.Models;
using Swashbuckle.AspNetCore;
using Minio;
using Minio.DataModel.Args;

var builder = WebApplication.CreateBuilder(args);

// 1. Регистрация базы данных (PostgreSQL)
builder.Services.AddDbContext<ApplicationDbContext>(options =>
	options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));

// 2. Регистрация настроек S3
builder.Services.Configure<S3Settings>(builder.Configuration.GetSection("S3"));

// 3. Регистрация клиента MinIO
builder.Services.AddSingleton<IMinioClient>(sp =>
{
	var config = sp.GetRequiredService<IConfiguration>();
	var endpoint = config["S3:Endpoint"]?.Replace("http://", "").Replace("https://", "") ?? "localhost:9000";
	var accessKey = config["S3:AccessKey"] ?? "minioadmin";
	var secretKey = config["S3:SecretKey"] ?? "minioadmin";

	return new MinioClient()
		.WithEndpoint(endpoint)
		.WithCredentials(accessKey, secretKey)
		.Build();
});

// 4. Регистрация контроллеров
builder.Services.AddControllers();

// 5. Настройка Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
	app.UseSwagger();
	app.UseSwaggerUI();
}

app.UseAuthorization();
app.MapControllers();

app.Run();

namespace S3MediaManager.Models
{
	public class S3Settings
	{
		public string Endpoint { get; set; } = "";
		public string Region { get; set; } = "";
		public string BucketName { get; set; } = "";
		public bool UseSSL { get; set; }
		public string AccessKey { get; set; } = "";
		public string SecretKey { get; set; } = "";
	}

	public class ApplicationDbContext : DbContext
	{
		public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }

		public DbSet<FileMetadata> Files { get; set; }
	}

	public class FileMetadata
	{
		public int Id { get; set; }
		public string OriginalName { get; set; } = "";
		public string S3Key { get; set; } = "";
		public long Size { get; set; }
		public string ContentType { get; set; } = "";
		public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
	}
}
using Microsoft.EntityFrameworkCore;
using Npgsql;
using S3MediaManager.Models;
using Swashbuckle.AspNetCore;
using Minio;
using Minio.DataModel.Args;

var builder = WebApplication.CreateBuilder(args);

// 1. Регистрация базы данных (PostgreSQL)
builder.Services.AddDbContext<ApplicationDbContext>(options =>
	options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));

// 2. Регистрация настроек S3
builder.Services.Configure<S3Settings>(builder.Configuration.GetSection("S3"));

// 3. Регистрация клиента MinIO
builder.Services.AddSingleton<IMinioClient>(sp =>
{
	var config = sp.GetRequiredService<IConfiguration>();
	var endpoint = config["S3:Endpoint"]?.Replace("http://", "").Replace("https://", "") ?? "localhost:9000";
	var accessKey = config["S3:AccessKey"] ?? "minioadmin";
	var secretKey = config["S3:SecretKey"] ?? "minioadmin";

	return new MinioClient()
		.WithEndpoint(endpoint)
		.WithCredentials(accessKey, secretKey)
		.Build();
});

// 4. Регистрация контроллеров
builder.Services.AddControllers();

// 5. Настройка Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
	app.UseSwagger();
	app.UseSwaggerUI();
}

app.UseAuthorization();
app.MapControllers();

app.Run();

namespace S3MediaManager.Models
{
	public class S3Settings
	{
		public string Endpoint { get; set; } = "";
		public string Region { get; set; } = "";
		public string BucketName { get; set; } = "";
		public bool UseSSL { get; set; }
		public string AccessKey { get; set; } = "";
		public string SecretKey { get; set; } = "";
	}

	public class ApplicationDbContext : DbContext
	{
		public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }

		public DbSet<FileMetadata> Files { get; set; }
	}

	public class FileMetadata
	{
		public int Id { get; set; }
		public string OriginalName { get; set; } = "";
		public string S3Key { get; set; } = "";
		public long Size { get; set; }
		public string ContentType { get; set; } = "";
		public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
	}
}