22 lines
787 B
C#
22 lines
787 B
C#
using System.Collections.Concurrent;
|
|
using Kitchen.DAL.Contracts;
|
|
|
|
namespace Kitchen.DAL.Repositories;
|
|
|
|
public sealed class InMemoryKitchenWorkItemRepository : IKitchenWorkItemRepository
|
|
{
|
|
private readonly ConcurrentDictionary<string, KitchenWorkItemRecord> store = new();
|
|
|
|
public Task<IReadOnlyCollection<KitchenWorkItemRecord>> ListQueuedAsync(CancellationToken cancellationToken)
|
|
{
|
|
var result = store.Values.Where(x => x.State == "Queued").OrderByDescending(x => x.Priority).ToArray();
|
|
return Task.FromResult<IReadOnlyCollection<KitchenWorkItemRecord>>(result);
|
|
}
|
|
|
|
public Task UpsertAsync(KitchenWorkItemRecord record, CancellationToken cancellationToken)
|
|
{
|
|
store[record.WorkItemId] = record;
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|