public CommittedEventStream ReadFrom(Guid id, long minVersion, long maxVersion)
        {
            NcqrsEventStoreContext eventContext = new NcqrsEventStoreContext(id, account, prefix);

            IQueryable<NcqrsEvent> storeEvents = eventContext.Events;

            // 628426 20 Feb 2011
            // Azure Table Storage Client struggles with lambdas where the rvalue is long.Min and .Max
            // so the following code added when interface changed to no longer use Nullable<long>
            if (minVersion != long.MinValue)
            {
                storeEvents = storeEvents.Where(e => e.Sequence >= minVersion);
            }
            if (maxVersion != long.MaxValue)
            {
                storeEvents = storeEvents.Where(e => e.Sequence <= maxVersion);
            }

            storeEvents = storeEvents.ToList().OrderBy(e => e.Sequence).AsQueryable();

            IEnumerable<CommittedEvent> committedEvents = storeEvents.Select(
                e => new CommittedEvent(
                        e.CommitId,
                        Guid.Parse(e.RowKey),
                        Guid.Parse(e.PartitionKey),
                        e.Sequence,
                        e.Timestamp,
                        Utility.DeJsonize(e.Data, e.Name),
                        Version.Parse(e.Version)
                        )
                );

            return new CommittedEventStream(id, committedEvents);
        }
Example #2
0
        public CommittedEventStream ReadFrom(Guid id, long minVersion, long maxVersion)
        {
            NcqrsEventStoreContext eventContext = new NcqrsEventStoreContext(id, account, prefix);

            IQueryable <NcqrsEvent> storeEvents = eventContext.Events;

            // 628426 20 Feb 2011
            // Azure Table Storage Client struggles with lambdas where the rvalue is long.Min and .Max
            // so the following code added when interface changed to no longer use Nullable<long>
            if (minVersion != long.MinValue)
            {
                storeEvents = storeEvents.Where(e => e.Sequence >= minVersion);
            }
            if (maxVersion != long.MaxValue)
            {
                storeEvents = storeEvents.Where(e => e.Sequence <= maxVersion);
            }

            storeEvents = storeEvents.ToList().OrderBy(e => e.Sequence).AsQueryable();

            IEnumerable <CommittedEvent> committedEvents = storeEvents.Select(
                e => new CommittedEvent(
                    e.CommitId,
                    Guid.Parse(e.RowKey),
                    Guid.Parse(e.PartitionKey),
                    e.Sequence,
                    e.Timestamp,
                    Utility.DeJsonize(e.Data, e.Name),
                    Version.Parse(e.Version)
                    )
                );

            return(new CommittedEventStream(id, committedEvents));
        }
        private void SaveEvents(Guid eventSourceId,
            IEnumerable<UncommittedEvent> events)
        {
            string eventSourceName = events.First().GetType().ToString();
            long initialVersion = events.First().InitialVersionOfEventSource;
            long lastVersion = initialVersion + events.Count();

            NcqrsEventStoreContext storeContext = new NcqrsEventStoreContext(eventSourceId, account, prefix);
            Guid commitId = storeContext.BeginCommit();

            NcqrsEventSource lastSource = storeContext.LatestEventSource;
            if (lastSource == null)
            {
                lastSource = new NcqrsEventSource(eventSourceId,
                    initialVersion,
                    eventSourceName);

            }
            else if (lastSource.Version != initialVersion)
            {
                throw new ConcurrencyException(eventSourceId, initialVersion);
            }

            foreach (UncommittedEvent @event in events)
            {
                storeContext.Add(new NcqrsEvent(@event));
            }

            lastSource.Version = lastVersion;
            storeContext.SaveSource(lastSource);

            storeContext.EndCommit();
        }
Example #4
0
        private void SaveEvents(Guid eventSourceId,
                                IEnumerable <UncommittedEvent> events)
        {
            string eventSourceName = events.First().GetType().ToString();
            long   initialVersion  = events.First().InitialVersionOfEventSource;
            long   lastVersion     = initialVersion + events.Count();

            NcqrsEventStoreContext storeContext = new NcqrsEventStoreContext(eventSourceId, account, prefix);
            Guid commitId = storeContext.BeginCommit();

            NcqrsEventSource lastSource = storeContext.LatestEventSource;

            if (lastSource == null)
            {
                lastSource = new NcqrsEventSource(eventSourceId,
                                                  initialVersion,
                                                  eventSourceName);
            }
            else if (lastSource.Version != initialVersion)
            {
                throw new ConcurrencyException(eventSourceId, initialVersion);
            }

            foreach (UncommittedEvent @event in events)
            {
                storeContext.Add(new NcqrsEvent(@event));
            }

            lastSource.Version = lastVersion;
            storeContext.SaveSource(lastSource);

            storeContext.EndCommit();
        }