public void Save(Type projectionType, CronusMessage cronusMessage) { var projection = FastActivator.CreateInstance(projectionType) as IProjectionDefinition; if (projection != null) { var projectionIds = projection.GetProjectionIds(cronusMessage.Payload as IEvent); string contractId = projectionType.GetContractId(); foreach (var projectionId in projectionIds) { foreach (var version in GetProjectionVersions(contractId)) { ISnapshot snapshot = snapshotStore.Load(contractId, projectionId, version); ProjectionStream projectionStream = LoadProjectionStream(projectionType, version, projectionId, snapshot); int snapshotMarker = snapshotStrategy.GetSnapshotMarker(projectionStream.Commits, snapshot.Revision); EventOrigin eventOrigin = cronusMessage.GetEventOrigin(); DateTime timestamp = DateTime.UtcNow; IEvent @event = cronusMessage.Payload as IEvent; var commit = new ProjectionCommit(projectionId, version, @event, snapshotMarker, eventOrigin, timestamp); projectionStore.Save(commit); } } } }
public void Save(Type projectionType, CronusMessage cronusMessage) { if (ReferenceEquals(null, projectionType)) { throw new ArgumentNullException(nameof(projectionType)); } if (ReferenceEquals(null, cronusMessage)) { throw new ArgumentNullException(nameof(cronusMessage)); } EventOrigin eventOrigin = cronusMessage.GetEventOrigin(); IEvent @event = cronusMessage.Payload as IEvent; Save(projectionType, @event, eventOrigin); }
public async Task SaveAsync(Type projectionType, CronusMessage cronusMessage) { if (ReferenceEquals(null, projectionType)) { throw new ArgumentNullException(nameof(projectionType)); } if (ReferenceEquals(null, cronusMessage)) { throw new ArgumentNullException(nameof(cronusMessage)); } EventOrigin eventOrigin = cronusMessage.GetEventOrigin(); IEvent @event = cronusMessage.Payload as IEvent; await SaveAsync(projectionType, @event, eventOrigin).ConfigureAwait(false);; }
public void Process(CronusMessage message) { var indexId = new EventStoreIndexEventTypeId(message.Payload.GetType().GetContractId()); var commit = new ProjectionCommit(indexId, Version, (IEvent)message.Payload, 1, message.GetEventOrigin(), DateTime.FromFileTimeUtc(message.GetRootEventTimestamp())); store.Save(commit); }