booking-microservices/src/BuildingBlocks/EventStoreDB/Subscriptions/InMemorySubscriptionCheckpointRepository.cs
meysamhadeli 31dc05f580 init
2022-05-07 19:33:06 +04:30

21 lines
681 B
C#

using System.Collections.Concurrent;
namespace BuildingBlocks.EventStoreDB.Subscriptions;
public class InMemorySubscriptionCheckpointRepository : ISubscriptionCheckpointRepository
{
private readonly ConcurrentDictionary<string, ulong> checkpoints = new();
public ValueTask<ulong?> Load(string subscriptionId, CancellationToken ct)
{
return new(checkpoints.TryGetValue(subscriptionId, out var checkpoint) ? checkpoint : null);
}
public ValueTask Store(string subscriptionId, ulong position, CancellationToken ct)
{
checkpoints.AddOrUpdate(subscriptionId, position, (_, _) => position);
return ValueTask.CompletedTask;
}
}