36 lines
1.3 KiB
C#
36 lines
1.3 KiB
C#
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<DbContextOptionsBuilder>? configureAction = null)
|
|
{
|
|
builder.Services.Configure<CreatorOptions>(
|
|
builder.Configuration.GetSection(CreatorOptions.ConfigurationSection));
|
|
builder.Services.AddScoped<SlugPurger>();
|
|
|
|
builder.Services.AddDbContext<CreatorsDbContext>(configureAction);
|
|
builder.Services.AddTransient<ICreatorLookup, CreatorLookup>();
|
|
|
|
return builder;
|
|
}
|
|
|
|
public static async Task<IApplicationBuilder> UseCreatorModuleAsync(
|
|
this IApplicationBuilder app,
|
|
CancellationToken cancellationToken = default)
|
|
{
|
|
IServiceScopeFactory scopeFactory = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>();
|
|
using IServiceScope scope = scopeFactory.CreateScope();
|
|
await using CreatorsDbContext context = scope.ServiceProvider.GetRequiredService<CreatorsDbContext>();
|
|
await context.Database.MigrateAsync(cancellationToken);
|
|
|
|
return app;
|
|
}
|
|
}
|