Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function unwrap(EventStream $envelopeStream)
 {
     $lookupKey = $envelopeStream->aggregateId()->toString();
     $events = [];
     /** @var EnvelopsEvent $envelope */
     foreach ($envelopeStream as $envelope) {
         $this->aggregateVersions[$lookupKey] = $envelope->aggregateVersion();
         $events[] = $envelope->event();
     }
     return new AggregateHistory($envelopeStream->aggregateId(), $events);
 }
 /**
  * {@inheritdoc}
  */
 public function commit(EventStream $eventStream)
 {
     $enrichedEnvelopes = [];
     /** @var EnvelopsEvent $envelope */
     foreach ($eventStream as $envelope) {
         foreach ($this->metadataEnrichers as $metadataEnricher) {
             $envelope = $metadataEnricher->enrich($envelope);
         }
         $enrichedEnvelopes[] = $envelope;
     }
     $this->next->commit(new EventStream($eventStream->aggregateId(), $enrichedEnvelopes));
 }