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(); } } }