using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using StellaOps.Infrastructure.Postgres.Options; using StellaOps.PacksRegistry.Core.Contracts; using StellaOps.PacksRegistry.Persistence.Postgres; using StellaOps.PacksRegistry.Persistence.Postgres.Repositories; namespace StellaOps.PacksRegistry.Persistence.Extensions; /// /// Extension methods for configuring PacksRegistry persistence services. /// public static class PacksRegistryPersistenceExtensions { /// /// Adds PacksRegistry PostgreSQL persistence services. /// public static IServiceCollection AddPacksRegistryPersistence( this IServiceCollection services, IConfiguration configuration, string sectionName = "Postgres:PacksRegistry") { services.Configure(configuration.GetSection(sectionName)); services.AddSingleton(); // Register repositories services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); return services; } /// /// Adds PacksRegistry PostgreSQL persistence services with explicit options. /// public static IServiceCollection AddPacksRegistryPersistence( this IServiceCollection services, Action configureOptions) { services.Configure(configureOptions); services.AddSingleton(); // Register repositories services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); return services; } }