using Hutopy.Modules.Memberships.Contracts; using Hutopy.Modules.Memberships.Data; using Hutopy.Modules.Memberships.Services; namespace Hutopy.Modules.Memberships; public static class DependencyInjection { public static WebApplicationBuilder AddMembershipModule( this WebApplicationBuilder builder, Action? configureAction = null) { builder.Services.AddDbContext(configureAction); builder.Services.AddTransient(); return builder; } public static async Task UseMembershipModuleAsync( this IApplicationBuilder app, CancellationToken cancellationToken = default) { IServiceScopeFactory scopeFactory = app.ApplicationServices.GetRequiredService(); using IServiceScope scope = scopeFactory.CreateScope(); await using MembershipsDbContext context = scope.ServiceProvider.GetRequiredService(); await context.Database.MigrateAsync(cancellationToken); return app; } }