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) { var scopeFactory = app.ApplicationServices.GetRequiredService(); using var scope = scopeFactory.CreateScope(); await using var context = scope.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(cancellationToken: cancellationToken); return app; } }