using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Identity.Entities;
namespace TakeoutSaaS.Domain.Identity.Repositories;
///
/// 角色-权限关系仓储。
///
public interface IRolePermissionRepository
{
///
/// 根据角色 ID 集合获取角色权限关系。
///
/// 租户 ID。
/// 角色 ID 集合。
/// 取消标记。
/// 角色权限关系列表。
Task> GetByRoleIdsAsync(long tenantId, IEnumerable roleIds, CancellationToken cancellationToken = default);
///
/// 批量新增角色权限关系。
///
/// 角色权限集合。
/// 取消标记。
/// 异步操作任务。
Task AddRangeAsync(IEnumerable rolePermissions, CancellationToken cancellationToken = default);
///
/// 替换角色的权限集合。
///
/// 租户 ID。
/// 角色 ID。
/// 权限 ID 集合。
/// 取消标记。
/// 异步操作任务。
Task ReplaceRolePermissionsAsync(long tenantId, long roleId, IEnumerable permissionIds, CancellationToken cancellationToken = default);
///
/// 提交持久化变更。
///
/// 取消标记。
/// 异步操作任务。
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}