using System.Text.Json; using FinlyticAssets; using FinlyticAssets.Database; using FinlyticCore.Services.TradeRepublic; using FinlyticAssets.Util; using FinlyticAssets.Services; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; var builder = Host.CreateApplicationBuilder(args); builder.Services.AddDbContext(options => options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"))); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(); builder.Services.AddHostedService(sp => sp.GetRequiredService()); builder.Services.AddHostedService(); builder.Services.AddHostedService(); var host = builder.Build(); using (var scope = host.Services.CreateScope()) { try { var context = scope.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(); // Fix: Reset InitAssetUpdateTypeDelay from old default (3600s) to new default (0s = no delay). // This ensures the scanner moves immediately to the next asset type during the initial scan. var settingsService = scope.ServiceProvider.GetRequiredService(); var settings = await settingsService.GetSettings(); if (settings.InitAssetUpdateTypeDelay == 3600) { settings.InitAssetUpdateTypeDelay = 0; await settingsService.SaveSettings(settings); Console.WriteLine("[Startup] InitAssetUpdateTypeDelay reset from 3600 to 0."); } } catch (Exception ex) { Console.WriteLine($"Critical error during database migration: {ex.Message}"); Console.WriteLine(ex.StackTrace); } } host.Run();