Ejemplo n.º 1
0
        public async Task Save(object @event)
        {
            ApplyEvent(@event);

            _stream.HeadRevision += 1;
            var commit = new Commit(_streamId, @event, _stream.HeadRevision);
            await _streamManager.AddCommit(commit);

            _stream.UnsnapshottedCommits += 1;

            if (_stream.UnsnapshottedCommits == CommitsBeforeSnapshot)
            {
                _stream.SnapshotRevision += 1;
                var snapshot = new Snapshot(_streamId, _stream.SnapshotRevision, _stream.HeadRevision, AggregateDataStructure);
                await _streamManager.AddSnapshot(snapshot);

                _stream.UnsnapshottedCommits = 0;
            }

            await _streamManager.UpsertStream(_stream);
        }