using GB5Shared.DTO.DirectAction; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace GB5Shared.DirectAction { public interface IDirectActionTokenDAL { Task GetByHashAsync(string tokenHash, LoginDTO login, CancellationToken ct = default); Task InsertUsedAsync(DirectActionTokenDTO dto, LoginDTO login, CancellationToken ct = default); } public class DirectActionTokenDAL : IDirectActionTokenDAL { private readonly IQueryExecutor _qe; public DirectActionTokenDAL(IQueryExecutor qe) => _qe = qe; public async Task GetByHashAsync( string tokenHash, LoginDTO login, CancellationToken ct = default) { return await _qe.QuerySingleAsync( login, DirectActionTokenQB.GET_BY_HASH, new { TokenHash = tokenHash, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task InsertUsedAsync( DirectActionTokenDTO dto, LoginDTO login, CancellationToken ct = default) { await _qe.ExecuteAsync( login, DirectActionTokenQB.INSERT_USED, dto, cancellationToken: ct).ConfigureAwait(false); } } }