private EventProviderTransaction CreateEventProviderTransaction(EventProvider eventProvider, SqlDomainEvent[] eventProviderEvents, SqlRevision[] eventProviderRevisions) { // create array for transactions revisions var revisions = new EventStreamRevision[eventProviderRevisions.Count()]; SqlRevision revision = null; // loop through each revision adding domain events for (var revisionIterator = 0; revisionIterator < eventProviderRevisions.Length; revisionIterator++) { // get current revision revision = eventProviderRevisions[revisionIterator]; // add revision to revision collection revisions[revisionIterator] = new DomainEventRevision(revision.EventProviderRevisionId, revision.EventProviderVersion, GetRevisionDomainEvents(eventProviderEvents, revision)); } // return new event provider transaction return(new EventProviderTransaction(revision.TransactionId, eventProvider, _serializer.Deserialize <ICommand>(revision.CommandTypeId, revision.CommandData), new EventProviderDescriptor(revision.Descriptor), revisions, _serializer.Deserialize <List <Meta> >(revision.Metadata))); }
public void Project(EventProvider eventProvider, params EventStreamRevision[] revisions) { Contract.Requires(eventProvider != null); Contract.Requires(revisions != null); Contract.Requires(revisions.Length > 0); EventStreamRevision revision = null; for (var i = 0; i < revisions.Length; i++) { revision = revisions[i]; var domainEventRevision = revision as DomainEventRevision; if (domainEventRevision == null) { throw new NotImplementedException(); } else { foreach (var domainEvent in domainEventRevision) { // get handler var handler = GetHandler(ProjectionHandlerCatalog.GetEntry(domainEvent.GetType())); // create context var context = GetContext(eventProvider, domainEvent); // handle Handle(handler, context); } } } _projectionPositions[eventProvider.Identity] = new ProjectionPosition(revision.Version); }
public void Append(EventStreamRevision revision) { Contract.Requires(revision != null); throw new NotImplementedException(); }