using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using DMS.Core.Models.Triggers;
using SqlSugar;
namespace DMS.Infrastructure.Repositories.Triggers.Impl
{
///
/// 基于 SqlSugar 的触发器仓储实现
///
public class SqlSugarTriggerRepository : ITriggerRepository
{
private readonly ISqlSugarClient _db;
public SqlSugarTriggerRepository(ISqlSugarClient db)
{
_db = db ?? throw new ArgumentNullException(nameof(db));
}
///
/// 获取所有触发器定义
///
public async Task> GetAllAsync()
{
return await _db.Queryable().ToListAsync();
}
///
/// 根据 ID 获取触发器定义
///
public async Task GetByIdAsync(Guid id)
{
return await _db.Queryable().InSingleAsync(id);
}
///
/// 添加一个新的触发器定义
///
public async Task AddAsync(TriggerDefinition trigger)
{
var insertedId = await _db.Insertable(trigger).ExecuteReturnSnowflakeIdAsync();
trigger.Id = insertedId;
return trigger;
}
///
/// 更新一个已存在的触发器定义
///
public async Task UpdateAsync(TriggerDefinition trigger)
{
var rowsAffected = await _db.Updateable(trigger).ExecuteCommandAsync();
return rowsAffected > 0 ? trigger : null;
}
///
/// 删除一个触发器定义
///
public async Task DeleteAsync(Guid id)
{
var rowsAffected = await _db.Deleteable().In(id).ExecuteCommandAsync();
return rowsAffected > 0;
}
///
/// 获取与指定变量关联的所有触发器定义
///
public async Task> GetByVariableIdAsync(Guid variableId)
{
return await _db.Queryable()
.Where(t => t.VariableId == variableId)
.ToListAsync();
}
}
}