using AmpDAL.DTO.ApiSchema; using AmpDAL.Query.ApiSchema; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AmpDAL.CustomCode.ApiSchema; public class ApiSchemaDAL(IQueryExecutor _qe) : IApiSchemaDAL { public async Task GetSchemaAsync(long ApiSchemaId, long ApiInterfaceId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync( login, ApiSchemaQB.GET_SCHEMA, new { ApiSchemaId = ApiSchemaId }).ConfigureAwait(false); public async Task> GetSchemaListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiSchemaQB.GET_SCHEMA_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task SaveSchemaAsync(ApiSchemaSaveDTO dto, LoginDTO login, CancellationToken ct) { dto.TenantId = login.ClientId; dto.CreatedById = login.UserId; dto.ModifiedById = login.UserId; return await _qe.ExecuteScalarAsync( login, ApiSchemaQB.SAVE_SCHEMA, new { dto.ApiSchemaId, dto.TenantId, dto.ApiId, dto.ApiInterfaceId, dto.ApiName, dto.SchemaJson, // ✅ NEW FIELDS dto.SchemaName, dto.SchemaDescription, dto.SpecificationSource, dto.SpecificationUrl, dto.RequestJson, dto.ResponseJson, dto.Remarks, dto.SortOrder, dto.Status, dto.Version, dto.SourceType, dto.CreatedById, dto.CreatedOn, dto.ModifiedById, dto.ModifiedOn }).ConfigureAwait(false); } public async Task UpdateSchemaAsync(ApiSchemaSaveDTO dto, LoginDTO login, CancellationToken ct) { dto.TenantId = login.ClientId; dto.ModifiedById = login.UserId; await _qe.ExecuteAsync( login, ApiSchemaQB.UPDATE_SCHEMA, new { dto.ApiSchemaId, dto.ApiInterfaceId, dto.ApiName, dto.SchemaJson, // ✅ NEW FIELDS dto.SchemaName, dto.SchemaDescription, dto.SpecificationSource, dto.SpecificationUrl, dto.RequestJson, dto.ResponseJson, dto.Remarks, dto.SortOrder, dto.Status, dto.Version, dto.SourceType, dto.ModifiedById, dto.ModifiedOn }).ConfigureAwait(false); return dto.ApiSchemaId; } public async Task> GetSchemaSelectListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiSchemaQB.GET_SCHEMA_SELECT_LIST, new { TenantId = login.ClientId}).ConfigureAwait(false); return result.ToList(); } public async Task> GetPagedSchemaList(int firstNumber, int maxResult, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiSchemaQB.GET_SCHEMA_LIST_PAGED, new { TenantId = login.ClientId, FirstNumber = firstNumber, MaxResult = maxResult }).ConfigureAwait(false); return result.ToList(); } public async Task DeleteById(int apiSchemaId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync( login, ApiSchemaQB.DELETE_SCHEMA, new { ApiSchemaId = apiSchemaId, TenantId = login.ClientId }).ConfigureAwait(false); }