using System.Data.Common; using EntitlementDAL.DTOs; using EntitlementDAL.Interfaces; using EntitlementDAL.QueryBuilders; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace EntitlementDAL.Implementations; public class AuditDAL : IAuditDAL { private readonly IQueryExecutor _QueryExecutor; public AuditDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task InsertEntitlementAuditAsync(EntitlementAuditDTO dto, LoginDTO login, DbTransaction? tx, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, AuditQB.INSERT_ENTITLEMENT_AUDIT, dto, tx, cancellationToken: ct).ConfigureAwait(false); public async Task> GetEntitlementLogByClientAsync(int clientId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, AuditQB.GET_ENTITLEMENT_LOG_BY_CLIENT, new { ClientId = clientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task InsertFeatureFlagAuditAsync(FeatureFlagAuditDTO dto, LoginDTO login, DbTransaction? tx, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, AuditQB.INSERT_FEATUREFLAG_AUDIT, dto, tx, cancellationToken: ct).ConfigureAwait(false); public async Task> GetFlagLogByFlagAsync(int featureFlagId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, AuditQB.GET_FLAG_LOG_BY_FLAG, new { FeatureFlagId = featureFlagId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); }