using FluentValidation; using IdentityShroud.Api.Mappers; using IdentityShroud.Core; using IdentityShroud.Core.EFCore; using IdentityShroud.GraphQL; using Serilog; using Serilog.Formatting.Json; // Initial logging until we can set it up from Configuration namespace IdentityShroud.Api; public class Program { public static void Main(string[] args) { Log.Logger = new LoggerConfiguration() .Enrich.FromLogContext() .WriteTo.Console(new JsonFormatter()) .CreateLogger(); var applicationBuilder = WebApplication.CreateSlimBuilder(args); ConfigureBuilder(applicationBuilder); var application = applicationBuilder.Build(); ConfigureApplication(application); application.Run(); } private static void ConfigureBuilder(WebApplicationBuilder builder) { var services = builder.Services; var configuration = builder.Configuration; services.AddOptions().Bind(configuration.GetSection("db")); // services.ConfigureHttpJsonOptions(options => // { // options.SerializerOptions.TypeInfoResolverChain.Insert(0, IdentityShroud.Api.AppJsonSerializerContext.Default); // }); services.AddScoped(); services.AddValidatorsFromAssemblyContaining(); services.AddHttpContextAccessor(); services.AddOpenApi(); services.AddExceptionHandler(); services.AddProblemDetails(); services .AddCore() .AddIdentityShroudGraphQL(); builder.Host.UseSerilog((context, services, configuration) => configuration .Enrich.FromLogContext() //.Enrich.With() .ReadFrom.Configuration(context.Configuration)); } private static void ConfigureApplication(WebApplication app) { app.UseExceptionHandler(); if (app.Environment.IsDevelopment()) { app.MapOpenApi(); } app.UseSerilogRequestLogging(); app.MapApis(); app.MapIdentityShroudGraphQL(); // app.UseRouting(); // app.MapControllers(); } }