using System.Reflection; using CvCleanupJob.Tasks; using JobScheduler.Scheduling; using JobScheduler.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Models.Settings; using Serilog; using StartupHelpers; const string ServiceName = "cv-cleanup-job"; StartupExtensions.LoadDotEnvFile(); var appVersion = StartupExtensions.GetApplicationVersion(Assembly.GetExecutingAssembly()); try { var builder = Host.CreateApplicationBuilder(args); builder.ConfigureJsonSerilog(ServiceName, appVersion); Log.Information("Starting {Service} version {AppVersion}", ServiceName, appVersion); builder.Services.Configure(builder.Configuration.GetSection("FileStorage")); builder.Services.AddSingleton(); builder.Services.AddSingleton>(sp => new IJobTask[] { sp.GetRequiredService(), }); builder.Services.AddHostedService(); var host = builder.Build(); host.LogHostStartupDiagnostics(ServiceName); Log.Information("{Service} startup complete. Background scheduler is running.", ServiceName); await host.RunAsync(); } catch (Exception ex) { Log.Fatal(ex, "{Service} terminated unexpectedly", ServiceName); } finally { Log.CloseAndFlush(); }