using Core.Blueprint.Mongo; using Core.Thalos.Adapters; using Core.Thalos.Infraestructure.Caching.Contracts; using Core.Thalos.Infraestructure.Contexts.Mongo; using Core.Thalos.Provider.Contracts; using Core.Thalos.Provider.Providers; using Core.Thalos.Provider.Providers.Onboarding; using LSA.Core.Dapper.Service.Caching; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; using MongoDB.Driver; namespace Core.Thalos.Provider { public static class ServiceCollectionExtensions { public static IServiceCollection AddDALLayerServices(this IServiceCollection services, IConfiguration configuration) { //Mongo services.AddScoped(); services.AddScoped>(); services.AddScoped(); services.AddScoped>(); services.AddScoped(); services.AddScoped>(); services.AddScoped(); services.AddScoped>(); return services; } private static IServiceCollection AddLogs(this IServiceCollection services) { services.AddLogging(); var serviceProvider = services.BuildServiceProvider(); //var logger = serviceProvider.GetService>(); //Add for Markup class later TODO //services.AddSingleton(typeof(ILogger), logger); return services; } private static IServiceCollection AddRedisCacheService(this IServiceCollection services, IConfiguration configuration) { var source = configuration.GetSection("ConnectionStrings"); var redisConnectionString = source["Redis"]?.ToString(); if (string.IsNullOrEmpty(redisConnectionString)) { throw new InvalidOperationException("Redis connection string is not configured."); } services.AddSingleton(provider => new CacheService(redisConnectionString, provider.GetRequiredService>())); return services; } } }