diff --git a/services/directory/src/FilterLists.Directory.Api/Program.cs b/services/directory/src/FilterLists.Directory.Api/Program.cs index 29a7a2e6f..c61f142ea 100644 --- a/services/directory/src/FilterLists.Directory.Api/Program.cs +++ b/services/directory/src/FilterLists.Directory.Api/Program.cs @@ -1,4 +1,5 @@ using System.Threading.Tasks; +using FilterLists.Directory.Infrastructure.Persistence; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Hosting; @@ -8,13 +9,15 @@ public static class Program { public static async Task Main(string[] args) { - await CreateHostBuilder(args).Build().RunAsync(); + var host = CreateHostBuilder(args).Build(); + await host.MigrateAsync(); + await host.RunAsync(); } public static IHostBuilder CreateHostBuilder(string[] args) { return Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup(); }); + .ConfigureWebHostDefaults(webBuilder => webBuilder.UseStartup()); } } } \ No newline at end of file diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj b/services/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj index 0b1f8ab5f..0695aab5c 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj +++ b/services/directory/src/FilterLists.Directory.Infrastructure/FilterLists.Directory.Infrastructure.csproj @@ -29,6 +29,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/SeedExtensions.cs b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/SeedExtensions.cs index ebbb3a510..4b16ccb83 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/SeedExtensions.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/SeedExtensions.cs @@ -2,11 +2,28 @@ using System.Collections.Generic; using System.IO; using System.Text.Json; +using System.Threading.Tasks; +using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; namespace FilterLists.Directory.Infrastructure.Persistence { - internal static class SeedExtensions + public static class SeedExtension + { + public static async Task MigrateAsync(this IHost host) + { + _ = host ?? throw new ArgumentNullException(nameof(host)); + + using var scope = host.Services.CreateScope(); + var db = scope.ServiceProvider.GetRequiredService(); + await db.Database.MigrateAsync(); + } + } + + internal static class SeedConfigurationExtension { public static void HasDataJsonFile(this EntityTypeBuilder entityTypeBuilder) {