protected function createAggregateRootFromHistory(AggregateRootEventList $history, $target_revision = null) { $target_revision = $target_revision ?: $history->getLast()->getSeqNumber(); if ($history->getLast()->getSeqNumber() > $target_revision) { $known_history = $history->filter(function (AggregateRootEventInterface $event) use($target_revision) { return $event->getSeqNumber() <= $target_revision; }); } else { $known_history = $history; } $aggregate_root = $this->getAggregateRootType()->createEntity(); $aggregate_root->reconstituteFrom($known_history); return $aggregate_root; }
protected function loadSpecificResourceRevision(AggregateRootEventList $history, $revision) { $aggregate_root = $this->getAggregateRootType()->createEntity(); $aggregate_root->reconstituteFrom($history->filter(function (AggregateRootEventInterface $event) use($revision) { return $event->getSeqNumber() <= $revision; })); return $this->getProjectionType()->createEntity($aggregate_root->toNative()); }