namespace Admin.NET.Core.Service;
///
/// 作业持久化(数据库)
///
public class DbJobPersistence : IJobPersistence
{
private readonly IServiceProvider _serviceProvider;
public DbJobPersistence(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
///
/// 作业计划Scheduler的JobDetail变化时
///
///
public void OnChanged(PersistenceContext context)
{
using var serviceScope = _serviceProvider.CreateScope();
var db = serviceScope.ServiceProvider.GetService();
var sql = context.ConvertToSQL(db.EntityMaintenance.GetEntityInfo().DbTableName, NamingConventions.Pascal);
db.Ado.ExecuteCommand(sql);
}
///
/// 作业计划Scheduler的触发器Trigger变化时
///
///
public void OnTriggerChanged(PersistenceTriggerContext context)
{
using var serviceScope = _serviceProvider.CreateScope();
var db = serviceScope.ServiceProvider.GetService();
var sql = context.ConvertToSQL(db.EntityMaintenance.GetEntityInfo().DbTableName, NamingConventions.Pascal);
db.Ado.ExecuteCommand(sql);
}
///
/// 作业调度器服务启动时(通常用来同步持久化数据到内存中)
///
///
///
///
public SchedulerBuilder Preload(string jobId, SchedulerBuilder builder)
{
// 如果是更新操作,则 return builder.Updated();
// 如果是新增操作,则 return builder.Appended();
// 如果是删除操作,则 return builder.Removed();
return builder.Updated();
}
}