/** * Insert an event * * @param StreamName $streamName * @param Message $e * @return void */ private function insertEvent(StreamName $streamName, Message $e) { $eventArr = $this->messageConverter->convertToArray($e); MessageDataAssertion::assert($eventArr); $eventData = ['event_id' => $eventArr['uuid'], 'version' => $eventArr['version'], 'event_name' => $eventArr['message_name'], 'payload' => $this->payloadSerializer->serializePayload($eventArr['payload']), 'created_at' => $eventArr['created_at']->format('Y-m-d\\TH:i:s.u')]; foreach ($eventArr['metadata'] as $key => $value) { $eventData[$key] = (string) $value; } $this->connection->insert($this->getTable($streamName), $eventData); }
/** * @return null|Message */ public function current() { if (false === $this->currentItem) { return; } $payload = $this->payloadSerializer->unserializePayload($this->currentItem['payload']); $metadata = []; //Add metadata stored in table foreach ($this->currentItem as $key => $value) { if (!in_array($key, $this->standardColumns)) { $metadata[$key] = $value; } } $createdAt = \DateTimeImmutable::createFromFormat('Y-m-d\\TH:i:s.u', $this->currentItem['created_at'], new \DateTimeZone('UTC')); return $this->messageFactory->createMessageFromArray($this->currentItem['event_name'], ['uuid' => $this->currentItem['event_id'], 'version' => (int) $this->currentItem['version'], 'created_at' => $createdAt, 'payload' => $payload, 'metadata' => $metadata]); }