/** * {@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)); }