public void Feed(IEvent @event, EventOrigin origin) { var indexId = new EventStoreIndexEventTypeId(@event.GetType().GetContractId()); var commit = new ProjectionCommit(indexId, indexVersion, @event, 1, origin, DateTime.FromFileTimeUtc(origin.Timestamp)); store.Save(commit); }
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 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); }
public void Save(Type projectionType, IEvent @event, EventOrigin eventOrigin) { string contractId = projectionType.GetContractId(); var instance = FastActivator.CreateInstance(projectionType); var statefullProjection = instance as IProjectionDefinition; if (statefullProjection != null) { var projectionIds = statefullProjection.GetProjectionIds(@event); foreach (var version in GetProjectionVersions(contractId)) { foreach (var projectionId in projectionIds) { ISnapshot snapshot = snapshotStore.Load(contractId, projectionId, version); ProjectionStream projectionStream = LoadProjectionStream(projectionType, version, projectionId, snapshot); int snapshotMarker = snapshotStrategy.GetSnapshotMarker(projectionStream.Commits, snapshot.Revision); var commit = new ProjectionCommit(projectionId, version, @event, snapshotMarker, eventOrigin, DateTime.UtcNow); projectionStore.Save(commit); } } } }
public void Save <T>(string id, T state) { var origin = new EventOrigin("StupidProjectionStore", 1, 1, 1); var version = new ProjectionVersion(state.GetType().GetContractId(), ProjectionStatus.Live, 1, "1"); var commit = new ProjectionCommit(new StupidId(id), version, new StupidEvent(state), 1, origin, DateTime.UtcNow); store.Save(commit); }
public static ProjectionCommitDto ToProjectionDto(this ProjectionCommit commit) { return(new ProjectionCommitDto() { Events = new List <EventDto> { commit.Event.ToEventDto(commit.TimeStamp) }, Timestamp = DateTime.FromFileTimeUtc(commit.EventOrigin.Timestamp) }); }
public string Resolve(ProjectionCommit projectionCommit) { if (ReferenceEquals(null, projectionCommit) == true) { throw new ArgumentNullException(nameof(projectionCommit)); } var tenant = string.Empty; if (TryResolve(projectionCommit.ProjectionId.RawId, out tenant)) { return(tenant); } throw new NotSupportedException($"Unable to resolve tenant for id {projectionCommit.ProjectionId}"); }
public async Task SaveAsync(ProjectionCommit commit) { if (projectionCommits.ContainsKey(commit.Version) == false) { projectionCommits.TryAdd(commit.Version, new ConcurrentDictionary <IBlobId, List <ProjectionCommit> >()); } if (projectionCommits[commit.Version].ContainsKey(commit.ProjectionId) == false) { projectionCommits[commit.Version] = new ConcurrentDictionary <IBlobId, List <ProjectionCommit> >(); projectionCommits[commit.Version].TryAdd(commit.ProjectionId, new List <ProjectionCommit>()); } projectionCommits[commit.Version][commit.ProjectionId].Add(commit); await Task.CompletedTask; }
public static IEnumerable <EventDto> ToEventsDto(this ProjectionCommit commit) { yield return(commit.Event.ToEventDto(commit.TimeStamp)); }