using System.Collections.Concurrent; namespace BuildingBlocks.EventStoreDB.Subscriptions; public class InMemorySubscriptionCheckpointRepository : ISubscriptionCheckpointRepository { private readonly ConcurrentDictionary checkpoints = new(); public ValueTask 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; } }