using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using Musify.Application.Contracts.Infrastructure; using Musify.Infrastructure.Configuration; namespace Musify.Infrastructure.Persistence { public static class DatabaseDependencyInjection { public static IServiceCollection AddDatabase(this IServiceCollection serviceDescriptors, IConfiguration configuration) { serviceDescriptors .AddOptionsWithValidateOnStart() .Bind(configuration.GetRequiredSection(DatabaseConfiguration.SectionName)) .ValidateDataAnnotations(); serviceDescriptors.AddSingleton(serviceProvider => serviceProvider.GetRequiredService>().Value); serviceDescriptors.AddDbContext(); serviceDescriptors.AddScoped(serviceProvider => serviceProvider.GetRequiredService()); return serviceDescriptors; } public static IServiceCollection AddProcessTrackingStore(this IServiceCollection serviceDescriptors) { serviceDescriptors.AddScoped(); return serviceDescriptors; } } }