Esempio n. 1
0
        public EventStream StartStream(string streamKey, params object[] events)
        {
            ensureAsStringStorage();

            var stream = new EventStream(streamKey, events.Select(EventStream.ToEvent).ToArray(), true);

            var operation = new AppendEventsOperation(stream, _store.Events);

            _session.UnitOfWork.Add(operation);

            return(stream);
        }
Esempio n. 2
0
        public EventStream StartStream(Type aggregateType, Guid id, params object[] events)
        {
            ensureAsGuidStorage();

            var stream = new EventStream(id, events.Select(EventStream.ToEvent).ToArray(), true)
            {
                AggregateType = aggregateType
            };

            var operation = new AppendEventsOperation(stream, _store.Events);

            _session.UnitOfWork.Add(operation);

            return(stream);
        }
Esempio n. 3
0
        public EventStream Append(string stream, params object[] events)
        {
            ensureAsStringStorage();

            if (_session.UnitOfWork.TryFindStream(stream, out var eventStream))
            {
                eventStream.AddEvents(events.Select(EventStream.ToEvent));
            }
            else
            {
                eventStream = new EventStream(stream, events.Select(EventStream.ToEvent).ToArray(), false);
                var operation = new AppendEventsOperation(eventStream, _store.Events);
                _session.UnitOfWork.Add(operation);
            }

            return(eventStream);
        }