diff options
Diffstat (limited to 'api/WhatApi/Program.cs')
| -rw-r--r-- | api/WhatApi/Program.cs | 84 |
1 files changed, 44 insertions, 40 deletions
diff --git a/api/WhatApi/Program.cs b/api/WhatApi/Program.cs index 823402d..ac7e825 100644 --- a/api/WhatApi/Program.cs +++ b/api/WhatApi/Program.cs @@ -7,47 +7,51 @@ global using NetTopologySuite.Geometries; global using Microsoft.AspNetCore.Http.Extensions; global using Microsoft.AspNetCore.Mvc; global using NetTopologySuite; +using Npgsql; +using WhatApi; using WhatApi.Middleware; -namespace WhatApi; - -public partial class Program -{ - public static int Main(string[] args) { - var builder = WebApplication.CreateBuilder(args); - - builder.Services.AddHttpContextAccessor(); - builder.Services.AddDbContextPool<Database>(b => { - if (builder.Environment.IsDevelopment()) - b.EnableSensitiveDataLogging(); - b.UseNpgsql(builder.Configuration.GetConnectionString("Master"), o => o.UseNetTopologySuite()); - }); - - builder.Services.AddRazorPages(); - builder.Services.AddCors(o => o.AddDefaultPolicy(p => p.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader())); - builder.Services.AddControllers() - .AddJsonOptions(o => { - o.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; - o.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals; - o.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; - o.JsonSerializerOptions.Converters.Add(new GeoJsonConverterFactory()); - }); +var builder = WebApplication.CreateBuilder(args); +var dev = builder.Environment.IsDevelopment(); +builder.Services.AddHttpContextAccessor(); +builder.Services.AddDbContextPool<Database>(b => { + var dataSourceBuilder = new NpgsqlDataSourceBuilder(builder.Configuration.GetConnectionString("Master")); + dataSourceBuilder.EnableDynamicJson(); + if (dev) { + b.EnableSensitiveDataLogging(); + dataSourceBuilder.EnableParameterLogging(); + dataSourceBuilder.UseNetTopologySuite(); + } + b.UseNpgsql(dataSourceBuilder.Build(), o => { + o.EnableRetryOnFailure(); + o.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery); + o.UseNetTopologySuite(); + }); +}); +if (dev) builder.Configuration["DISABLE_AUDIT_TRAILS"] = "true"; +builder.Services.AddCors(o => o.AddDefaultPolicy(p => p.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader())); - var app = builder.Build(); +builder.Services.AddControllers() + .AddJsonOptions(o => { + o.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; + o.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals; + o.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles; + o.JsonSerializerOptions.Converters.Add(new GeoJsonConverterFactory()); + }); -#if DEBUG - using var scope = app.Services.CreateScope(); - var db = scope.ServiceProvider.GetRequiredService<Database>(); - Seed(db); -#endif - app.UseRouting(); - app.UseForwardedHeaders(); - app.UseCors(); - app.MapStaticAssets(); - app.UseMiddleware<UserLastSeenMiddleware>(); - app.MapRazorPages(); - app.MapControllers(); - app.Run(); - return 0; - } -}
\ No newline at end of file +var app = builder.Build(); +if (dev) { + using var scope = app.Services.CreateScope(); + var db = scope.ServiceProvider.GetRequiredService<Database>(); + Seed.Full(db, opt => { + opt.ClearTables = false; + }); +} +app.UseRouting(); +app.UseForwardedHeaders(); +app.UseCors(); +app.MapStaticAssets(); +app.UseMiddleware<UserLastSeenMiddleware>(); +app.MapControllers(); +app.Run(); +return 0;
\ No newline at end of file |
