using Hutopy.Modules.Creators.Configuration; using Hutopy.Modules.Creators.Contracts; using Hutopy.Modules.Creators.Data; using Hutopy.Modules.Creators.Services; namespace Hutopy.Modules.Creators; public static class DependencyInjection { public static WebApplicationBuilder AddCreatorModule( this WebApplicationBuilder builder, Action? configureAction = null) { builder.Services.Configure( builder.Configuration.GetSection(CreatorOptions.ConfigurationSection)); builder.Services.AddScoped(); builder.Services.AddDbContext(configureAction); builder.Services.AddTransient(); return builder; } public static async Task UseCreatorModuleAsync( this IApplicationBuilder app, CancellationToken cancellationToken = default) { IServiceScopeFactory scopeFactory = app.ApplicationServices.GetRequiredService(); using IServiceScope scope = scopeFactory.CreateScope(); await using CreatorsDbContext context = scope.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(cancellationToken); return app; } }