Exemplo n.º 1
0
        public IEnumerable <TAggregate> GetAll()
        {
            var aggregateType = typeof(TAggregate);

            if (!AggregateTypeStreams.TryGetValue(aggregateType, out var aggregateStreams))
            {
                throw new KeyNotFoundException($"Aggregates of type {aggregateType.FullName} not stored in this storage.");
            }
            return(aggregateStreams.Select(pair => (TAggregate)pair.Value));
        }
Exemplo n.º 2
0
        /// <inheritdoc />
        public Task Write(Guid aggregateId, TAggregate aggregate)
        {
            var aggregateType   = typeof(TAggregate);
            var aggregateStream = AggregateTypeStreams.GetOrAdd(aggregateType, new ConcurrentDictionary <Guid, object>());

            aggregateStream.AddOrUpdate(
                aggregateId,
                aggregate,
                (_, __) => aggregate);
            return(Task.CompletedTask);
        }
Exemplo n.º 3
0
        /// <inheritdoc />
        public Task <TAggregate> Read(Guid aggregateId)
        {
            var aggregateType = typeof(TAggregate);

            if (!AggregateTypeStreams.TryGetValue(aggregateType, out var aggregateStreams) ||
                !aggregateStreams.TryGetValue(aggregateId, out var aggregate))
            {
                throw new KeyNotFoundException($"An aggregate of type {aggregateType.FullName} with ID {aggregateId} not found.");
            }

            return(Task.FromResult((TAggregate)aggregate));
        }