/** * @test */ public function event_is_converted_to_stream_data() { $uuid = new UUID(); $event = new WritableEvent($uuid, 'Foo', ['bar']); $streamData = ['eventId' => $uuid->toNative(), 'eventType' => 'Foo', 'data' => ['bar'], 'metadata' => []]; $this->assertEquals($streamData, $event->toStreamData()); }
public function testEventStoreCanCreateAStreamAndOpenIt() { $es = $this->getEventStore(); $event = WritableEvent::newInstance('SomethingHappened', ['foo' => 'bar']); $streamName = 'StreamName'; $es->writeToStream($streamName, $event); $es->openStreamFeed($streamName); }
/** * @param DomainEvent $event * @return WritableEvent */ public function toWritableEvent(DomainEvent $event) { $serializedEvent = $this->arraySerializer->serialize($event); $eventType = $serializedEvent['messageType']; $data = $serializedEvent['payload']; unset($data['aggregateId']); unset($data['version']); return WritableEvent::newInstance($eventType, $data); }
/** * @param int $length * @param array $metadata * @return string */ function prepare_test_stream(EventStore $es, $length = 1, $metadata = []) { $streamName = uniqid(); $events = []; for ($i = 0; $i < $length; ++$i) { $events[] = WritableEvent::newInstance('Foo', ['foo' => 'bar'], $metadata); } $collection = new WritableEventCollection($events); $es->writeToStream($streamName, $collection); return $streamName; }
/** * @inheritDoc */ public function append($id, DomainEventStreamInterface $eventStream) { $events = []; $playhead = null; foreach ($eventStream as $message) { $payload = $message->getPayload(); if ($playhead === null) { $playhead = $message->getPlayhead(); } $events[] = WritableEvent::newInstance(get_class($payload), array_merge($payload->serialize(), ['broadway_recorded_on' => $message->getRecordedOn()->toString()]), $message->getMetadata()->serialize()); } try { $this->eventStore->writeToStream($id, new WritableEventCollection($events), $playhead - 1); } catch (WrongExpectedVersionException $e) { throw new BroadwayOptimisticLockException($e->getMessage()); } }
/** * @param object|IsEventSourced $aggregateRoot * * @return array */ private function getWriteableEventsFromAggregate($aggregateRoot) { $domainEvents = $aggregateRoot->extractRecordedEvents(); $eventsArray = []; foreach ($domainEvents as $event) { $metadata = []; if ($this->metadataStore) { $metadata = $this->metadataStore->metadata($event); } $eventsArray[] = WritableEvent::newInstance(get_class($event), $this->eventSerializer->serialize($event), $metadata); } return $eventsArray; }