Files
ERP/Commerce/ECommerce/ECommerce.API/Program.cs
T
2026-08-05 21:15:15 +03:00

104 lines
2.9 KiB
C#

using Commerce.Config;
using Commerce.Endpoints;
using Commerce.Contracts.Options;
using Commerce.Domain;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http.Features;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Identity;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Options;
using Microsoft.IdentityModel.Tokens;
#pragma warning disable CS0618
Npgsql.NpgsqlConnection.GlobalTypeMapper.EnableDynamicJson();
#pragma warning restore CS0618
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
// builder.Services.AddSwaggerGen();
builder.Services.Configure<JWT>(builder.Configuration.GetSection("JWT"));
// builder.Services.AddDbContext<Context>(
// options => options.(builder.Configuration["ConnectionStrings:maria"], ServerVersion.AutoDetect(builder.Configuration["ConnectionStrings:maria"])));
var connectionString = builder.Configuration.GetConnectionString("PostgreDB");
var dataSourceBuilder = new Npgsql.NpgsqlDataSourceBuilder(connectionString);
dataSourceBuilder.EnableDynamicJson();
var dataSource = dataSourceBuilder.Build();
builder.Services.AddDbContext<Context>(options =>
options.UseNpgsql(dataSource)
);
// builder.Services.AddCustomCors();
builder.Services.RegFluentEmail(builder.Configuration);
builder.Services.AddCustomCors();
builder.Services.AddSwag();
builder.Services.Authenticate(builder.Configuration);
builder.Services.Authorize();
builder.Services.RegisterServices();
// builder.Services.AddAntiforgery();
builder.WebHost.ConfigureKestrel(options =>
{
options.Limits.MaxRequestBodySize = 512 * 1024 * 1024; // 512 MB
});
// Configure form options for multipart body length
builder.Services.Configure<FormOptions>(options =>
{
options.MultipartBodyLengthLimit = 512 * 1024 * 1024; // 512 MB
});
// builder.WebHost.UseUrls("http://*:80"); // Explicit HTTP binding
var app = builder.Build();
using (var scope = app.Services.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<Context>();
db.Database.Migrate(); // Applies pending migrations
}
// if (args.Contains("--migrate"))
// {
// using var scope = app.Services.CreateScope();
// var db = scope.ServiceProvider.GetRequiredService<Context>();
// db.Database.Migrate();
// }
app.UseRouting();
app.UseStaticFiles();
app.UseCors("default");
app.UseAuthentication();
app.UseAuthorization();
// Configure the HTTP request pipeline.
// if (app.Environment.IsDevelopment())
// {
// app.UseSwagger();
// app.UseSwaggerUI();
// }
// app.UseAntiforgery();
// app.UseHttpsRedirection();
app.MapOpenApi();
if (app.Environment.IsDevelopment())
{
app.UseSwag();
}
app.MapAPIv1();
app.Run();