using Femto.Modules.Media.Data; using Femto.Modules.Media.Infrastructure; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; namespace Femto.Modules.Media.Application; public static class Startup { public static void InitializeMediaModule(this IServiceCollection rootContainer, string connectionString, string storageRoot) { var hostBuilder = Host.CreateDefaultBuilder(); hostBuilder.ConfigureServices(services => { services.AddDbContext(builder => { builder.UseNpgsql(connectionString); builder.UseSnakeCaseNamingConvention(); }); services.AddTransient(s => new FilesystemStorageProvider(storageRoot)); services.AddMediatR(c => c.RegisterServicesFromAssembly(typeof(Startup).Assembly)); }); var host = hostBuilder.Build(); rootContainer.AddTransient(_ => new MediaModule(host)); } }