/** * @param Identity $aggregateId * @param int $version */ public function playToVersion(Identity $aggregateId, int $version) { $events = $this->eventStore->getEventsForAggregate($aggregateId); $partialHistory = []; /* @var $event \Apha\Message\Event */ foreach ($events->getIterator() as $event) { if ($event->getVersion() > $version) { break; } $partialHistory[] = $event; } $this->eventPlayer->play(new Events($partialHistory)); }
/** * @param Identity $aggregateIdentity * @return AggregateRoot */ public function findById(Identity $aggregateIdentity) : AggregateRoot { $events = $this->eventStore->getEventsForAggregate($aggregateIdentity); return $this->factory->createAggregate($aggregateIdentity, $events); }
/** * @param EventBus $eventBus * @param EventStorage $storage * @param Serializer $serializer * @param EventClassMap $eventMap */ public function __construct(EventBus $eventBus, EventStorage $storage, Serializer $serializer, EventClassMap $eventMap) { $this->eventBus = new TraceableEventBus($eventBus); parent::__construct($this->eventBus, $storage, $serializer, $eventMap); }
/** * @test */ public function getAggregateIdsRetrievesIdentitiesFromStorage() { $eventBus = $this->getEventBus(); $storage = $this->getEventStorage(); $serializer = $this->getSerializer(); $eventMap = $this->getEventMap(); $ids = ['fb1f37b1-e508-45c7-a564-89790aafcdd7', 'ab1f37b1-e508-45c7-a564-89790aafcdd7']; $storage->expects(self::once())->method('findIdentities')->willReturn($ids); $eventStore = new EventStore($eventBus, $storage, $serializer, $eventMap); $identities = $eventStore->getAggregateIds(); self::assertCount(count($ids), $identities); }