using AutomationDAL.DTO.ScriptVersion; using AutomationDAL.Query.ScriptVersion; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AutomationDAL.CustomCode.ScriptVersion; public class ScriptVersionDAL : IScriptVersionDAL { private readonly IQueryExecutor _qe; public ScriptVersionDAL(IQueryExecutor qe) => _qe = qe; public async Task GetById(int versionId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, ScriptVersionQB.GET_BY_ID, new { VersionId = versionId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return rows.FirstOrDefault(); } public async Task> GetByScript(int scriptId, LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, ScriptVersionQB.GET_BY_SCRIPT, new { ScriptId = scriptId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task GetLatestReleased(int scriptId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, ScriptVersionQB.GET_LATEST_RELEASED, new { ScriptId = scriptId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return rows.FirstOrDefault(); } public async Task Insert(ScriptVersionDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteIdentityAsync(login, ScriptVersionQB.INSERT, new { dto.ScriptId, dto.VersionLabel, dto.GitCommit, dto.ImageTag, TenantId = login.ClientId, CreatedById = login.UserId }).ConfigureAwait(false); public async Task UpdateCheckResult(int versionId, string checkStatus, string? checkDetails, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, ScriptVersionQB.UPDATE_CHECK_RESULT, new { VersionId = versionId, CheckStatus = checkStatus, CheckDetails = checkDetails, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task Release(int versionId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, ScriptVersionQB.RELEASE, new { VersionId = versionId, ReleasedById = login.UserId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); }