using System.Collections.Concurrent; using System.Data; using InServiceQue.Core.Models; using InServiceQue.Core.Repositories; namespace InServiceQue.InMemory; public class TaskRepositoryInMemory: ITaskRepository { private static ConcurrentQueue _que = new(); public void Dispose() { // TODO release managed resources here } public void Insert(QueueTask task) { _que.Enqueue(task); } public async Task InsertAsync(QueueTask task) { Insert(task); await Task.CompletedTask; } public IDbTransaction StartTransaction() { return null; } public async Task StartTransactionAsync() { return await Task.FromResult(null); } public void CommitTransaction(IDbTransaction tx) { } public async Task CommitTransactionAsync(IDbTransaction tx) { await Task.CompletedTask; } public void RollbackTransaction(IDbTransaction tx) { } public async Task RollbackTransactionAsync(IDbTransaction tx) { await Task.CompletedTask; } public QueueTask? GetNextTask(IDbTransaction tx) { QueueTask? task; _que.TryDequeue(out task); return task; } public async Task GetNextTaskAsync(IDbTransaction tx) { QueueTask? task = null; _que.TryDequeue(out task); return await Task.FromResult(task); } public void SaveTask(QueueTask task, IDbTransaction tx) { } public async Task SaveTaskAsync(QueueTask task, IDbTransaction tx) { await Task.CompletedTask; } }