var builder = WebApplication.CreateBuilder(args); builder.AddServiceDefaults(); builder.Services.AddGrpc(); builder.Services.AddControllers(); // Application specific services builder.Services.AddHealthChecks(builder.Configuration); builder.Services.AddDbContexts(builder.Configuration); builder.Services.AddApplicationOptions(builder.Configuration); builder.Services.AddIntegrationServices(); builder.Services.AddTransient(); builder.Services.AddTransient(); var app = builder.Build(); if (!await app.CheckHealthAsync()) { return; } app.UseServiceDefaults(); app.MapGet("/", () => Results.Redirect("/swagger")); app.MapControllers(); app.MapGrpcService(); var eventBus = app.Services.GetRequiredService(); eventBus.Subscribe(); eventBus.Subscribe(); // REVIEW: This is done fore development east but shouldn't be here in production using (var scope = app.Services.CreateScope()) { var context = scope.ServiceProvider.GetRequiredService(); var settings = app.Services.GetService>(); var logger = app.Services.GetService>(); await context.Database.MigrateAsync(); await new CatalogContextSeed().SeedAsync(context, app.Environment, settings, logger); var integEventContext = scope.ServiceProvider.GetRequiredService(); await integEventContext.Database.MigrateAsync(); } await app.RunAsync();