using LiteCharms.Extensions; using Shop.Components; using static LiteCharms.Abstractions.Constants; var builder = WebApplication.CreateBuilder(args); builder.Services.AddRazorComponents() .AddInteractiveServerComponents(); builder.AddMonitoring(); builder.Services.AddControllers(); builder.Services.AddBlazoredToast(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddMediator(); builder.Services.AddSalesServiceBus(); builder.Services.AddGeneralServiceBus(); builder.Services.AddShopDatabase(builder.Configuration); builder.Services.AddQuartzSchedulerClient(ShopSchedulerName, builder.Configuration); builder.Services.AddPostgresHealtchCheck(); builder.Services.AddQuartzHealtchCheck(); builder.Services.AddHealthChecksSupport(builder.Configuration); var app = builder.Build(); var schedulerFactory = app.Services.GetRequiredService(); var scheduler = await schedulerFactory.GetScheduler(ShopSchedulerName); if (!scheduler!.IsStarted) await scheduler.Start(); if (!app.Environment.IsDevelopment()) { app.UseExceptionHandler("/Error", createScopeForErrors: true); app.UseHsts(); } app.UseHealthChecks("/health", new HealthCheckOptions { ResponseWriter = HealthChecks.UI.Client.UIResponseWriter.WriteHealthCheckUIResponse }); app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true); app.UseHttpsRedirection(); app.UseAntiforgery(); app.MapStaticAssets(); app.MapRazorComponents() .AddInteractiveServerRenderMode(); app.Run();