using System; using FinlyticCore.Models.Trades; using FinlyticTrades.Database; using FinlyticTrades.Services; using FinlyticTrades.Util; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; var builder = Host.CreateApplicationBuilder(args); // 1. Standard DbContext (Scoped) builder.Services.AddDbContext(options => options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"))); // 2. Domain Services (Scoped) builder.Services.AddScoped(); builder.Services.AddScoped(); // 3. Hosted Services / Singletons builder.Services.AddSingleton(); builder.Services.AddHostedService(sp => sp.GetRequiredService()); builder.Services.AddHostedService(); var host = builder.Build(); // DB Migrations ausführen using (var scope = host.Services.CreateScope()) { try { var context = scope.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(); Console.WriteLine("Database migrations successfully executed for FinlyticTrades."); var settingsService = scope.ServiceProvider.GetRequiredService(); await settingsService.GetSettingsAsync(); } catch (Exception ex) { var logger = scope.ServiceProvider.GetRequiredService>(); logger.LogError(ex, "An error occurred during database migration for FinlyticTrades on startup."); } } await host.RunAsync();