using GB5Shared.DTO.Framework.Login; using JobEngineDAL.DTOs; namespace JobEngineDAL.Interfaces { public interface IJobQueueDAL { Task EnqueueAsync(JobQueueItemDTO item, LoginDTO login, CancellationToken ct); Task> ClaimBatchAsync(int tenantId, IReadOnlyList messageTypes, int batchSize, LoginDTO login, CancellationToken ct); Task CompleteAsync(long queueId, LoginDTO login, CancellationToken ct); Task RetryAsync(long queueId, TimeSpan delay, string errorDetails, LoginDTO login, CancellationToken ct); Task MoveToDLQAsync(long queueId, string errorDetails, LoginDTO login, CancellationToken ct); Task RequeueItemAsync(long queueId, LoginDTO login, CancellationToken ct); Task CancelItemAsync(long queueId, LoginDTO login, CancellationToken ct); Task PurgeDLQAsync(int daysOld, LoginDTO login, CancellationToken ct); Task<(IEnumerable Items, int TotalCount)> GetQueuePagedAsync( int tenantId, string? status, string? messageType, int page, int pageSize, LoginDTO login, CancellationToken ct); Task> GetQueueStatsAsync(LoginDTO login, CancellationToken ct); Task GetDLQTotalAsync(LoginDTO login, CancellationToken ct); Task GetPendingTotalAsync(LoginDTO login, CancellationToken ct); } }