Exemple #1
0
        public async Task <EventWriteResult> Save(IAggregate aggregate)
        {
            var streamName = _streamNameProvider.GetStreamName(Type, aggregate.Id);
            EventWriteResult result;
            bool             committed = false;

            if (!aggregate.HasProcessed)
            {
                result = await _eventPersistenceClient.Save(aggregate.GetPendingChanges().ToList(), streamName, aggregate.ExpectedVersion);

                committed = true;
            }
            else
            {
                result = new EventWriteResult()
                {
                    WriteStatus = WriteStatus.AlreadyProcessed
                };
            }

            aggregate.ClearPendingChanges(committed);

            return(result);
        }