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()
];
}