Added initializer for dev environment for the new dbContexts

This commit is contained in:
Dominic Villemure
2024-08-18 11:06:32 -04:00
parent f5f80fa234
commit 558fe7bc67
5 changed files with 68 additions and 0 deletions

View File

@@ -0,0 +1,32 @@
namespace Hutopy.Web.Features.Contents.Data;
public static class InitializerExtensions
{
public static async Task InitialiseContentDbContextAsync(this WebApplication app)
{
using var scope = app.Services.CreateScope();
var initializer = scope.ServiceProvider.GetRequiredService<ContentDbContextInitializer>();
await initializer.InitialiseAsync();
}
}
public class ContentDbContextInitializer(
ILogger<ContentDbContextInitializer> logger,
ContentDbContext context
)
{
public async Task InitialiseAsync()
{
try
{
await context.Database.MigrateAsync();
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred while initialising the content database.");
throw;
}
}
}

View File

@@ -9,6 +9,7 @@ public static class DependencyInjection
Action<DbContextOptionsBuilder>? configureAction = null) Action<DbContextOptionsBuilder>? configureAction = null)
{ {
services.AddDbContext<ContentDbContext>(configureAction); services.AddDbContext<ContentDbContext>(configureAction);
services.AddScoped<ContentDbContextInitializer>();
return services; return services;
} }

View File

@@ -0,0 +1,32 @@
namespace Hutopy.Web.Features.Messages.Data;
public static class InitializerExtensions
{
public static async Task InitialiseMessagingDbContextAsync(this WebApplication app)
{
using var scope = app.Services.CreateScope();
var initializer = scope.ServiceProvider.GetRequiredService<MessagingDbContextInitializer>();
await initializer.InitialiseAsync();
}
}
public class MessagingDbContextInitializer(
ILogger<MessagingDbContextInitializer> logger,
MessagingDbContext context
)
{
public async Task InitialiseAsync()
{
try
{
await context.Database.MigrateAsync();
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred while initialising the messaging database.");
throw;
}
}
}

View File

@@ -9,6 +9,7 @@ public static class DependencyInjection
Action<DbContextOptionsBuilder>? configureAction = null) Action<DbContextOptionsBuilder>? configureAction = null)
{ {
services.AddDbContext<MessagingDbContext>(configureAction); services.AddDbContext<MessagingDbContext>(configureAction);
services.AddScoped<MessagingDbContextInitializer>();
return services; return services;
} }

View File

@@ -109,6 +109,8 @@ app.UseAuthorization();
// Initialize and seed the db. // Initialize and seed the db.
await app.InitialiseApplicationDatabaseAsync(); await app.InitialiseApplicationDatabaseAsync();
await app.InitialiseContentDbContextAsync();
await app.InitialiseMessagingDbContextAsync();
await app.SeedDatabaseWithTestDataOnlyIfNoDataIsPresentAsync(); await app.SeedDatabaseWithTestDataOnlyIfNoDataIsPresentAsync();
// Configure the HTTP request pipeline. // Configure the HTTP request pipeline.