diff --git a/src/WebApi/Common/DependencyInjectionExtensions.cs b/src/WebApi/Common/DependencyInjectionExtensions.cs index 7e09813..8c1326a 100644 --- a/src/WebApi/Common/DependencyInjectionExtensions.cs +++ b/src/WebApi/Common/DependencyInjectionExtensions.cs @@ -45,6 +45,8 @@ public static class DependencyInjectionExtensions services.AddHttpContextAccessor(); + services.AddHostedService(); + return services; } diff --git a/src/WebApi/Persistence/ApplyMigrationsService.cs b/src/WebApi/Persistence/ApplyMigrationsService.cs new file mode 100644 index 0000000..a55de3a --- /dev/null +++ b/src/WebApi/Persistence/ApplyMigrationsService.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore; + +namespace Vegasco.WebApi.Persistence; + +public class ApplyMigrationsService : IHostedService +{ + private readonly IServiceScopeFactory _scopeFactory; + + public ApplyMigrationsService(IServiceScopeFactory scopeFactory) + { + _scopeFactory = scopeFactory; + } + + public async Task StartAsync(CancellationToken cancellationToken) + { + using IServiceScope scope = _scopeFactory.CreateScope(); + await using var dbContext = scope.ServiceProvider.GetRequiredService(); + await dbContext.Database.MigrateAsync(cancellationToken); + } + + public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask; +} \ No newline at end of file