using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using SwDAL.DTO.UserResourceRole; using SwDAL.Query.UserResourceRole; namespace SwDAL.CustomCode.UserResourceRole; public class UserResourceRoleDAL : IUserResourceRoleDAL { private readonly IQueryExecutor _QueryExecutor; public UserResourceRoleDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task> GetGrantsForUser(int userId, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.QueryAsync( loginDTO, UserResourceRoleQB.GET_GRANTS_FOR_USER, new { UserId = userId, TenantId = loginDTO.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task> GetGranteesForServer(int dbServerId, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.QueryAsync( loginDTO, UserResourceRoleQB.GET_GRANTEES_FOR_SERVER, new { DbServerId = dbServerId, TenantId = loginDTO.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task> GetGranteesForClientDb(int clientDbId, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.QueryAsync( loginDTO, UserResourceRoleQB.GET_GRANTEES_FOR_CLIENTDB, new { ClientDbId = clientDbId, TenantId = loginDTO.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task GetEffectiveRole(int userId, int? dbServerId, int? clientDbId, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( loginDTO, UserResourceRoleQB.GET_EFFECTIVE_ROLE, new { UserId = userId, DbServerId = dbServerId, ClientDbId = clientDbId, TenantId = loginDTO.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task UpsertGrant(UserResourceRoleDTO dto, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(loginDTO, UserResourceRoleQB.UPSERT_GRANT, dto, cancellationToken: ct) .ConfigureAwait(false); public async Task RevokeGrant(RevokeUserResourceRoleDTO dto, LoginDTO loginDTO, CancellationToken ct) => await _QueryExecutor.ExecuteAsync( loginDTO, UserResourceRoleQB.REVOKE_GRANT, new { dto.UserId, dto.DbServerId, dto.ClientDbId, TenantId = loginDTO.ClientId }, cancellationToken: ct) .ConfigureAwait(false); }