using LiteCharms.Features.Extensions; using LiteCharms.Features.Mediator; using LiteCharms.Features.MidrandBooks.Extensions; using LiteCharmsScheduler.Workers; using static LiteCharms.Features.Extensions.Quartz; var builder = Host.CreateApplicationBuilder(args); builder.Services.AddMediator(); builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(TelemetryPipelineBehavior<,>)); builder.Services.AddScoped(typeof(IPipelineBehavior<,>), typeof(LoggingPipelineBehavior<,>)); builder.Services.AddEmailServices(builder.Configuration); builder.Services.AddEmailServiceBus(); builder.Services.AddShopServices(); builder.Services.AddHashServices(builder.Configuration); builder.Services.AddMidrandShopDatabase(builder.Configuration); builder.Services.AddQuartzScheduler(MidrandShopSchedulerName, builder.Configuration); builder.Services.AddHostedService(); var host = builder.Build(); var schedulerFactory = host.Services.GetRequiredService(); var scheduler = await schedulerFactory.GetScheduler(MidrandShopSchedulerName); if (!scheduler!.IsStarted) await scheduler.Start(); host.Run();