using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using SwDAL.DTO.ChangeRequest; using SwDAL.DTO.SavedQuery; using SwDAL.Query.SavedQuery; namespace SwDAL.CustomCode.SavedQuery; public class SavedQueryDAL : ISavedQueryDAL { private readonly IQueryExecutor _qe; public SavedQueryDAL(IQueryExecutor qe) => _qe = qe; public async Task GetById(int savedQueryId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync(login, SavedQueryQB.GET_BY_ID, new { SavedQueryId = savedQueryId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task<(IEnumerable rows, int total)> GetList( SavedQueryListCriteria criteria, int pageOffset, int pageSize, LoginDTO login, CancellationToken ct) { var (sql, countSql) = SavedQueryQB.BuildSavedQueryList(criteria, login.UserId, "queryname", "ASC"); var param = new { TenantId = login.ClientId, UserId = login.UserId, criteria.IsShared, criteria.DbServerId, SearchText = string.IsNullOrWhiteSpace(criteria.SearchText) ? null : $"%{criteria.SearchText}%", PageOffset = pageOffset, PageSize = pageSize }; var paged = await _qe.QueryPagedAsync(login,sql,param); return (paged.Items ?? Enumerable.Empty(),paged.TotalCount); } public async Task> GetSelectList(int firstNumber, int maxResult, LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, SavedQueryQB.GET_SELECT_LIST, new { TenantId = login.ClientId, UserId = login.UserId, FirstNumber = firstNumber, MaxResult = maxResult }, cancellationToken: ct) .ConfigureAwait(false); public async Task Insert(SavedQueryDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteIdentityAsync(login, SavedQueryQB.INSERT, new { dto.QueryName, dto.Description, dto.QueryText, dto.IsShared, dto.DbServerId, TenantId = login.ClientId, CreatedById = login.UserId, ModifiedById = login.UserId }).ConfigureAwait(false); public async Task Update(SavedQueryDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, SavedQueryQB.UPDATE, new { dto.SavedQueryId, dto.QueryName, dto.Description, dto.QueryText, dto.IsShared, dto.DbServerId, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); public async Task Delete(int savedQueryId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, SavedQueryQB.DELETE, new { SavedQueryId = savedQueryId, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); }