using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using SwDAL.DTO.ChangeRequest; using SwDAL.DTO.QueryHistory; using SwDAL.Query.QueryHistory; namespace SwDAL.CustomCode.QueryHistory; public class QueryHistoryDAL : IQueryHistoryDAL { private readonly IQueryExecutor _qe; public QueryHistoryDAL(IQueryExecutor qe) => _qe = qe; public async Task Insert(QueryHistoryInsertDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteIdentityAsync(login, QueryHistoryQB.INSERT, new { dto.QueryText, dto.SavedQueryId, dto.RowsReturned, dto.ExecutionMs, dto.IsSuccess, dto.ErrorMessage, ExecutedById = login.UserId, TenantId = login.ClientId }).ConfigureAwait(false); public async Task GetById(int queryHistoryId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync(login, QueryHistoryQB.GET_BY_ID, new { QueryHistoryId = queryHistoryId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task<(IEnumerable rows, int total)> GetList( QueryHistoryListCriteria criteria, int pageOffset, int pageSize, LoginDTO login, CancellationToken ct) { var (sql, countSql) = QueryHistoryQB.BuildQueryHistoryList(criteria); var param = new { TenantId = login.ClientId, criteria.SavedQueryId, criteria.IsSuccess, 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); } }