using TakeoutSaaS.Domain.Identity.Entities;
namespace TakeoutSaaS.Domain.Identity.Repositories;
///
/// 角色仓储。
///
public interface IRoleRepository
{
///
/// 根据 ID 查询角色。
///
/// 角色 ID。
/// 租户 ID。
/// 取消标记。
/// 角色实体或 null。
Task FindByIdAsync(long roleId, long tenantId, CancellationToken cancellationToken = default);
///
/// 根据编码查询角色。
///
/// 角色编码。
/// 租户 ID。
/// 取消标记。
/// 角色实体或 null。
Task FindByCodeAsync(string code, long tenantId, CancellationToken cancellationToken = default);
///
/// 批量获取角色列表。
///
/// 租户 ID。
/// 角色 ID 集合。
/// 取消标记。
/// 角色集合。
Task> GetByIdsAsync(long tenantId, IEnumerable roleIds, CancellationToken cancellationToken = default);
///
/// 按关键字搜索角色。
///
/// 租户 ID。
/// 关键字。
/// 取消标记。
/// 角色集合。
Task> SearchAsync(long tenantId, string? keyword, CancellationToken cancellationToken = default);
///
/// 新增角色。
///
/// 角色实体。
/// 取消标记。
/// 异步操作任务。
Task AddAsync(Role role, CancellationToken cancellationToken = default);
///
/// 更新角色。
///
/// 角色实体。
/// 取消标记。
/// 异步操作任务。
Task UpdateAsync(Role role, CancellationToken cancellationToken = default);
///
/// 删除角色。
///
/// 角色 ID。
/// 租户 ID。
/// 取消标记。
/// 异步操作任务。
Task DeleteAsync(long roleId, long tenantId, CancellationToken cancellationToken = default);
///
/// 保存仓储变更。
///
/// 取消标记。
/// 异步操作任务。
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}