From 21bf4ab282ac6986a9e03f5878143f7bf932efc1 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Fri, 28 Aug 2020 12:04:30 -0500 Subject: [PATCH] =?UTF-8?q?feat(directory):=20=E2=9C=A8=20migrate=20db=20o?= =?UTF-8?q?n=20app=20startup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/FilterLists.Directory.Api/Program.cs | 7 +++++-- ...ilterLists.Directory.Infrastructure.csproj | 1 + .../Persistence/SeedExtensions.cs | 19 ++++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) 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) {