using Elsa.Diagnostics.StructuredLogs.Contracts; using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Contracts; using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Options; using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Services; using Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Stores; using Elsa.Extensions; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; namespace Elsa.Diagnostics.StructuredLogs.Persistence.Relational.Extensions; public static class RelationalStructuredLogsServiceCollectionExtensions { public static IServiceCollection AddRelationalStructuredLogPersistence(this IServiceCollection services, Action? configureOptions = null) { if (configureOptions != null) services.Configure(configureOptions); services.AddOptions(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.TryAddSingleton(); services.Replace(ServiceDescriptor.Singleton(sp => sp.GetRequiredService())); services.Replace(ServiceDescriptor.Singleton(sp => sp.GetRequiredService())); services.TryAddEnumerable(ServiceDescriptor.Singleton()); services.AddBackgroundTask(); services.AddHostedService(sp => sp.GetRequiredService()); return services; } }