using AnalyticsDAL.DTO.Warehouse; using AnalyticsDAL.Query.Warehouse; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AnalyticsDAL.CustomCode.Warehouse { public class WarehouseFactDimensionDAL : IWarehouseFactDimensionDAL { private readonly IQueryExecutor _qe; public WarehouseFactDimensionDAL(IQueryExecutor qe) => _qe = qe; public async Task> GetByFactAsync( int factId, LoginDTO login, CancellationToken ct) { var rows = await _qe .QueryAsync(login, WarehouseFactDimensionQB.GET_BY_FACT, new { FactId = factId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); return rows.ToList(); } public async Task InsertAsync(WarehouseFactDimensionDTO dto, LoginDTO login, CancellationToken ct) { // MWAREHOUSEFACTDIMENSION uses IDENTITY(1,1) PK — ExecuteIdentityAsync, no MAUTONUMBER. return await _qe .ExecuteIdentityAsync(login, WarehouseFactDimensionQB.INSERT, new { dto.FactId, dto.DimensionTable, dto.FactFkColumn, dto.DimJoinColumn, dto.SortOrder, TenantId = login.ClientId }) .ConfigureAwait(false); } public async Task UpdateAsync(WarehouseFactDimensionDTO dto, LoginDTO login, CancellationToken ct) { await _qe .ExecuteAsync(login, WarehouseFactDimensionQB.UPDATE, new { dto.FactDimensionId, dto.DimensionTable, dto.FactFkColumn, dto.DimJoinColumn, dto.SortOrder, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); } public async Task DeleteAsync(int factDimensionId, LoginDTO login, CancellationToken ct) { await _qe .ExecuteAsync(login, WarehouseFactDimensionQB.DELETE, new { FactDimensionId = factDimensionId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); } } }