using DD.Persistence.Database.Entity; using DD.Persistence.Database.Postgres.Repositories; using DD.Persistence.Database.Postgres.RepositoriesCached; using DD.Persistence.Models; using DD.Persistence.Repositories; using Mapster; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using System.Reflection; namespace DD.Persistence.Database.Model; public static class DependencyInjection { public static IServiceCollection AddPersistenceDbContext(this IServiceCollection services, IConfiguration configuration) { string connectionStringName = "DefaultConnection"; services.AddDbContext(options => options.UseNpgsql(configuration.GetConnectionString(connectionStringName))); services.AddScoped(provider => provider.GetRequiredService()); return services; } public static void MapsterSetup() { TypeAdapterConfig.GlobalSettings.Default.Config .ForType() .Ignore(dest => dest.System, dest => dest.SystemId); TypeAdapterConfig.NewConfig() .Map(dest => dest.Value, src => new ChangeLogValuesDto() { Value = src.Value, Id = src.Id }); } public static IServiceCollection AddInfrastructure(this IServiceCollection services) { var typeAdapterConfig = TypeAdapterConfig.GlobalSettings; typeAdapterConfig.RuleMap.Clear(); typeAdapterConfig.Scan(Assembly.GetExecutingAssembly()); MapsterSetup(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); services.AddTransient(); return services; } }