using CMS.Plugin.PipeLineLems.Domain.Data;
using CMS.Project.Abstractions;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Volo.Abp.DependencyInjection;
namespace CMS.Plugin.PipeLineLems
{
///
/// 工程数据库迁移器,当加载工程时此对象会被创建调用
///
public class CMSPluginRuntimeMigrator : IProjectRuntimeMigrator
{
///
/// 执行迁移
///
/// 当前要运行的工程
/// 存在运行工程上下文的serviceProvider
///
public async Task UpgradeAsync(Project.Project project, IServiceProvider serviceProvider)
{
var objectAccessor = serviceProvider.GetService>();
if (objectAccessor != null)
{
objectAccessor.Value = project;
}
var logger = serviceProvider.GetRequiredService>();
try
{
// 通过serviceProvider获取自己的DbContext并进行创建或迁移流程
logger.LogInformation($"Start {project.Info.Id} PipeLineLems dbcontext create");
await serviceProvider.GetRequiredService().MigrateAsync();
}
catch (Exception ex)
{
logger.LogError(ex, "Create PipeLineLems db failed");
}
if (objectAccessor != null)
{
objectAccessor.Value = null;
}
}
}
}