public function appendEvents($type, DomainEventStreamInterface $events) { while ($events->hasNext()) { $event = $events->next(); IdentifierValidator::validateIdentifier($event->getAggregateIdentifier()); $serializedPayload = $this->serializer->serializePayload($event); $serializedMetaData = $this->serializer->serializeMetaData($event); $this->entryStore->persistEvent($type, $event, $serializedPayload, $serializedMetaData, $this->entityManager); } $this->entityManager->flush(); }
public function readEvents($type, $identifier) { if (null !== $identifier) { IdentifierValidator::validateIdentifier($identifier); } if (null !== $this->aggregateIdentifier && $this->aggregateIdentifier !== $identifier) { throw new EventStoreException("You probably want to use aggregateIdentifier() on your fixture " . "to get the aggregate identifier to use"); } else { if (null === $this->aggregateIdentifier) { $this->aggregateIdentifier = $identifier; $this->injectAggregateIdentifier(); } } $allEvents = $this->givenEvents; $allEvents = array_merge($allEvents, $this->storedEvents); if (empty($allEvents)) { throw new AggregateNotFoundException($identifier, "No 'given' events were configured for this aggregate, " . "nor have any events been stored."); } return new SimpleDomainEventStream($allEvents); }