using System.Text.Json.Serialization; using FastEndpoints; using FastEndpoints.Swagger; using MissionControl.Data; var builder = WebApplication.CreateBuilder(args); builder.Services.AddMissionControlData( builder.Configuration.GetConnectionString("MissionControl") ?? throw new InvalidOperationException("Missing connection string 'MissionControl'") ); builder.Services.AddFastEndpoints(); builder.Services.SwaggerDocument(options => options.ShortSchemaNames = true); var app = builder.Build(); app.UseDefaultExceptionHandler(useGenericReason: !app.Environment.IsDevelopment()); app.UseFastEndpoints(config => { config.Endpoints.RoutePrefix = "api"; config.Endpoints.ShortNames = true; // The exercise ships without authentication, so every endpoint is anonymous. config.Endpoints.Configurator = endpoint => endpoint.AllowAnonymous(); config.Serializer.Options.Converters.Add(new JsonStringEnumConverter()); }); if (app.Environment.IsDevelopment()) { app.UseSwaggerGen(); await DevelopmentDatabase.MigrateAndSeedAsync(app.Services); } app.Run();