using GB5Shared.DTO.Framework.Login;
using GB5Shared.QueryExecutor;
using PIEDAL.DTO.QC;
using PIEDAL.Query.QC;
namespace PIEDAL.CustomCode.QC;
///
/// PIE QC sub-domain — read-only DAL implementation.
/// Queries MPIEVARIANT × MPIEVARIANTIMPLICATION for behavior matrix;
/// MPIEUATSCENARIO for test templates.
///
public class PIEQcDAL : IPIEQcDAL
{
private readonly IQueryExecutor _QueryExecutor;
public PIEQcDAL(IQueryExecutor queryExecutor)
{
_QueryExecutor = queryExecutor;
}
public async Task GetBehaviorMatrixHeaderAsync(
Guid moduleId, LoginDTO login, CancellationToken ct)
=> await _QueryExecutor.QuerySingleAsync(
login,
PIEQcQB.GET_BEHAVIOR_MATRIX_HEADER,
new { ModuleId = moduleId, TenantId = login.ClientId },
cancellationToken: ct).ConfigureAwait(false);
public async Task> GetBehaviorMatrixRowsAsync(
Guid moduleId, LoginDTO login, CancellationToken ct)
=> await _QueryExecutor.QueryAsync(
login,
PIEQcQB.GET_BEHAVIOR_MATRIX,
new { ModuleId = moduleId, TenantId = login.ClientId },
cancellationToken: ct).ConfigureAwait(false)
?? Enumerable.Empty();
public async Task> GetTestTemplatesAsync(
Guid moduleId, LoginDTO login, CancellationToken ct)
=> await _QueryExecutor.QueryAsync(
login,
PIEQcQB.GET_TEST_TEMPLATES,
new { ModuleId = moduleId, TenantId = login.ClientId },
cancellationToken: ct).ConfigureAwait(false)
?? Enumerable.Empty();
}