Ejemplo n.º 1
0
            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);
            }
Ejemplo n.º 2
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 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)
     });
 }
Ejemplo n.º 7
0
        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}");
        }
Ejemplo n.º 8
0
        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;
        }
Ejemplo n.º 9
0
 public static IEnumerable <EventDto> ToEventsDto(this ProjectionCommit commit)
 {
     yield return(commit.Event.ToEventDto(commit.TimeStamp));
 }