using Microsoft.OpenApi.Models; using TestWeb.Core.Jobs; using TestWeb.Core.Users; using TestWeb.Core.Vehicles; using TestWeb.Core.WeatherForecasts; using TestWeb.Infra; using TestWeb.Utils; namespace TestWeb; public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); AddServices(builder); var app = builder.Build(); Configure(app); app.Run(); } public static void AddServices(WebApplicationBuilder builder) { builder.Services.AddDbContext( options => options.UseSqlite("DataSource=app.db")); builder.Services.AddOpenApi(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); builder.Services.AddCors(options => { options.AddPolicy( "CorsPolicy", builder => builder .AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod() ); }); builder.Services.AddValidatorsFromAssembly(typeof(Program).Assembly); } public static void Configure(WebApplication app) { app.MapOpenApi(); app.UseSwagger(); app.UseSwaggerUI(); app.UseDeveloperExceptionPage(); app.UseCors("CorsPolicy"); app.UseHttpsRedirection(); app.UseRouting(); var endpoints = app.MapGroup("") .AddEndpointFilter(); var securityScheme = new OpenApiSecurityScheme() { Type = SecuritySchemeType.Http, Name = JwtBearerDefaults.AuthenticationScheme, Scheme = JwtBearerDefaults.AuthenticationScheme, Reference = new() { Type = ReferenceType.SecurityScheme, Id = JwtBearerDefaults.AuthenticationScheme } }; endpoints.WithOpenApi(x => new() { Security = [new() { [securityScheme] = [] }] }); JobsModule.MapEndpoints(endpoints); UsersModule.MapEndpoints(endpoints); VehiclesModule.MapEndpoints(endpoints); WeatherForecastsModule.MapEndpoints(endpoints); using var scope = app.Services.CreateScope(); var db = scope.ServiceProvider.GetRequiredService(); db.Database.EnsureCreated(); } }