Exemplo n.º 1
0
        private void Rebuild(Checkpoint from, Checkpoint to, IEnumerable <IProjection> rawProjections)
        {
            var projections = rawProjections.Select(e => new ProjectionWrapper(e, log)).ToArray();

            if (!projections.Any())
            {
                return;
            }

            if (from.IsUndefined)
            {
                foreach (var projection in projections)
                {
                    projection.Clear();
                }
            }

            DateTime start;

            if (from.IsUndefined)
            {
                start = new DateTime(2013, 1, 1);
            }
            else
            {
                start = from.CommitStampProcessed.Value.AddSeconds(-2);
            }

            foreach (var projection in projections)
            {
                projection.Begin();
            }

            var commits = historyReader.Read(start, DateTime.UtcNow);

            commits = FilterByCheckpoints(commits, from, to);
            commits = PauseAware(commits, from);
            commits = ShowLogs(commits, from, to, projections);

            foreach (var commit in commits)
            {
                RebuildCommit(commit, projections);
            }

            foreach (var projection in projections)
            {
                projection.Flush();
            }
        }