using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using JobEngineDAL.DTOs; using JobEngineDAL.Interfaces; using JobEngineDAL.Query; namespace JobEngineDAL.Implementations { public class SchedulerDAL : ISchedulerDAL { private readonly IQueryExecutor _qe; public SchedulerDAL(IQueryExecutor queryExecutor) => _qe = queryExecutor; public async Task> GetSchedulersAsync(LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, SchedulerQB.GET_SCHEDULERS, null, cancellationToken: ct).ConfigureAwait(false); public async Task GetSchedulerByIdAsync(int schedulerId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync(login, SchedulerQB.GET_SCHEDULER_BY_ID, new { SchedulerId = schedulerId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveSchedulerAsync(SchedulerDTO dto, LoginDTO login, CancellationToken ct) { if (dto.SchedulerId == 0) return await _qe.ExecuteIdentityAsync(login, SchedulerQB.SAVE_SCHEDULER_INSERT, new { dto.CronExpression, dto.SchedulerType, dto.IntervalSeconds, dto.ScheduledDate, dto.Description, SchedulerStatus = dto.SchedulerStatus ?? "ACTIVE", CreatedBy = login.UserId }).ConfigureAwait(false); await _qe.ExecuteAsync(login, SchedulerQB.SAVE_SCHEDULER_UPDATE, new { dto.CronExpression, dto.SchedulerType, dto.IntervalSeconds, dto.ScheduledDate, dto.Description, SchedulerStatus = dto.SchedulerStatus ?? "ACTIVE", UpdatedBy = login.UserId, dto.SchedulerId }, cancellationToken: ct).ConfigureAwait(false); return dto.SchedulerId; } } }