using TakeoutSaaS.Domain.Dictionary.Entities;
namespace TakeoutSaaS.Domain.Dictionary.Repositories;
///
/// 字典项仓储契约。
///
public interface IDictionaryItemRepository
{
///
/// 根据 ID 获取字典项。
///
/// 字典项 ID。
/// 取消标记。
/// 字典项或 null。
Task GetByIdAsync(long itemId, CancellationToken cancellationToken = default);
///
/// 获取分组下字典项列表。
///
/// 租户 ID。
/// 分组 ID。
/// 取消标记。
/// 字典项集合。
Task> GetByGroupIdAsync(long tenantId, long groupId, CancellationToken cancellationToken = default);
///
/// 获取合并后的系统/租户字典项。
///
/// 租户 ID。
/// 系统分组 ID。
/// 是否包含租户覆盖。
/// 取消标记。
/// 字典项集合。
Task> GetMergedItemsAsync(long tenantId, long systemGroupId, bool includeOverrides, CancellationToken cancellationToken = default);
///
/// 新增字典项。
///
/// 字典项实体。
/// 取消标记。
Task AddAsync(DictionaryItem item, CancellationToken cancellationToken = default);
///
/// 更新字典项。
///
/// 字典项实体。
/// 取消标记。
Task UpdateAsync(DictionaryItem item, CancellationToken cancellationToken = default);
///
/// 删除字典项。
///
/// 字典项实体。
/// 取消标记。
Task RemoveAsync(DictionaryItem item, CancellationToken cancellationToken = default);
///
/// 持久化更改。
///
/// 取消标记。
/// 异步任务。
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}