Exemplo n.º 1
0
        public async Task <T> Load <T>(NonEmptyGuid id, CancellationToken cancellationToken = default) where T : IAggregate, new()
        {
            var aggregate = new T();

            if (aggregate is Aggregate eventSourced)
            {
                eventSourced.Id = id;

                var filter = EventFilter.ForAggregate(id);

                await foreach (var(item, _) in _readRepository.Get(filter, cancellationToken))
                {
                    eventSourced.LoadFromHistory(item);
                }
            }
            else
            {
                throw new NotImplementedException();
            }

            return(aggregate);
        }