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); }
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(); }
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(); }