using Femto.Common.Infrastructure; using Femto.Modules.Auth.Data; using MediatR; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; namespace Femto.Modules.Auth.Application; public static class AuthStartup { public static void InitializeAuthenticationModule( this IServiceCollection rootContainer, string connectionString ) { var hostBuilder = Host.CreateDefaultBuilder(); hostBuilder.ConfigureServices(services => ConfigureServices(services, connectionString)); var host = hostBuilder.Build(); rootContainer.AddScoped(_ => new AuthModule(host)); rootContainer.AddHostedService(services => new AuthApplication(host)); } private static void ConfigureServices(IServiceCollection services, string connectionString) { services.AddDbContext(builder => { builder.UseNpgsql(connectionString); builder.UseSnakeCaseNamingConvention(); }); services.AddMediatR(c => c.RegisterServicesFromAssembly(typeof(AuthStartup).Assembly)); services.AddDbContext(builder => { builder.UseNpgsql(); builder.UseSnakeCaseNamingConvention(); builder.EnableSensitiveDataLogging(); }); services.ConfigureDomainServices(); services.AddMediatR(c => { c.RegisterServicesFromAssembly(typeof(AuthStartup).Assembly); }); } }