You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.6 KiB
52 lines
1.6 KiB
12 months ago
|
using System.Threading;
|
||
|
using System.Threading.Tasks;
|
||
|
using Microsoft.Extensions.Configuration;
|
||
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
using Microsoft.Extensions.Hosting;
|
||
|
using WinIn.FasterZ.AgGridReport.Data;
|
||
|
using Serilog;
|
||
|
using Volo.Abp;
|
||
|
using Volo.Abp.Data;
|
||
|
|
||
|
namespace WinIn.FasterZ.AgGridReport.DbMigrator;
|
||
|
|
||
|
public class DbMigratorHostedService : IHostedService
|
||
|
{
|
||
|
private readonly IHostApplicationLifetime _hostApplicationLifetime;
|
||
|
private readonly IConfiguration _configuration;
|
||
|
|
||
|
public DbMigratorHostedService(IHostApplicationLifetime hostApplicationLifetime, IConfiguration configuration)
|
||
|
{
|
||
|
_hostApplicationLifetime = hostApplicationLifetime;
|
||
|
_configuration = configuration;
|
||
|
}
|
||
|
|
||
|
public async Task StartAsync(CancellationToken cancellationToken)
|
||
|
{
|
||
|
using (var application = await AbpApplicationFactory.CreateAsync<AgGridReportDbMigratorModule>(options =>
|
||
|
{
|
||
|
options.Services.ReplaceConfiguration(_configuration);
|
||
|
options.UseAutofac();
|
||
|
options.Services.AddLogging(c => c.AddSerilog());
|
||
|
options.AddDataMigrationEnvironment();
|
||
|
}))
|
||
|
{
|
||
|
await application.InitializeAsync();
|
||
|
|
||
|
await application
|
||
|
.ServiceProvider
|
||
|
.GetRequiredService<AgGridReportDbMigrationService>()
|
||
|
.MigrateAsync();
|
||
|
|
||
|
await application.ShutdownAsync();
|
||
|
|
||
|
_hostApplicationLifetime.StopApplication();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public Task StopAsync(CancellationToken cancellationToken)
|
||
|
{
|
||
|
return Task.CompletedTask;
|
||
|
}
|
||
|
}
|