using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; namespace ScadaLink.StoreAndForward; public static class ServiceCollectionExtensions { public static IServiceCollection AddStoreAndForward(this IServiceCollection services) { services.AddSingleton(sp => { var options = sp.GetRequiredService>().Value; var logger = sp.GetRequiredService>(); return new StoreAndForwardStorage( $"Data Source={options.SqliteDbPath}", logger); }); services.AddSingleton(sp => { var storage = sp.GetRequiredService(); var options = sp.GetRequiredService>().Value; var logger = sp.GetRequiredService>(); return new StoreAndForwardService(storage, options, logger); }); services.AddSingleton(sp => { var options = sp.GetRequiredService>().Value; var logger = sp.GetRequiredService>(); return new ReplicationService(options, logger); }); return services; } public static IServiceCollection AddStoreAndForwardActors(this IServiceCollection services) { // Akka actor registration handled by Host component during actor system startup return services; } }