using IBKRTrader.Core.Workers; using IBKRTrader.Modules.CongressTrading.Database; using IBKRTrader.Modules.CongressTrading.Scraper; using IBKRTrader.Modules.CongressTrading.Workers; using Microsoft.Extensions.DependencyInjection; namespace IBKRTrader.Modules.CongressTrading; /// /// Entry-Point des CongressTrading-Moduls. /// Registriert alle modulspezifischen Services in den DI-Container. /// /// Architektur-Regel: Dieser Code wird von Program.cs aufgerufen. /// Der Core kennt dieses Modul NICHT – die Abhängigkeit geht nur von Modul → Core. /// public static class CongressTradingModule { public const string ModuleKey = "CT"; /// Registriert alle Modul-Services im DI-Container. public static void Register(IServiceCollection services) { // Datenbank services.AddSingleton(); services.AddSingleton(); // Scraper services.AddSingleton(); // Worker services.AddSingleton(); services.AddSingleton(); } /// /// Führt die Modul-Migrationen aus und resettet ggf. den Fortschritt. /// public static async Task InitializeAsync(IServiceProvider provider) { var migrations = provider.GetRequiredService(); await migrations.RunAsync(); // Einmaliger Reset: löscht alle alten (fehlerhaften) Fortschritts-Daten // damit der Import sauber von Seite 1 neu startet. var repo = provider.GetRequiredService(); // await repo.ResetHistoryImportAsync(); } /// Gibt die Modul-Worker für die WorkerEngine zurück. public static IEnumerable GetWorkers(IServiceProvider provider) => [ provider.GetRequiredService(), provider.GetRequiredService() ]; }