using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Mirea.Api.DataAccess.Application.Interfaces.DbContexts.Schedule; using Mirea.Api.DataAccess.Persistence.Contexts.Schedule; using Mirea.Api.DataAccess.Persistence.Properties; using System; using System.Collections.Generic; namespace Mirea.Api.DataAccess.Persistence; public static class DependencyInjection { public static IServiceCollection AddPersistence(this IServiceCollection services, IConfiguration configuration) { var settings = configuration.GetSection(nameof(DbSettings)).Get(); var connection = settings?.ConnectionStringSql; Dictionary> dbConfigurations = new() { { DatabaseEnum.Mysql, options => options.UseMySql(connection, ServerVersion.AutoDetect(connection)) }, { DatabaseEnum.Sqlite, options => options.UseSqlite(connection) }, { DatabaseEnum.PostgresSql, options => options.UseNpgsql(connection) } }; if (dbConfigurations.TryGetValue((DatabaseEnum)settings?.TypeDatabase!, out var dbConfig)) { services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); services.AddDbContext(dbConfig); } else throw new NotSupportedException("Unsupported database type"); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); services.AddScoped(provider => provider.GetService()!); return services; } }