/** * @param EventMessageInterface $event * @param SerializerInterface $serializer * @return RedisEventRecord */ public static function fromMessage(EventMessageInterface $event, SerializerInterface $serializer) { $data = ['id' => $event->getId(), 'timestamp' => $event->getTimestamp(), 'payload_type' => $event->getPayloadType(), 'payload' => $serializer->serialize($event->getPayload()), 'metadata' => $serializer->serialize($event->getMetadata())]; if ($event instanceof DomainEventMessageInterface) { $data['aggregate'] = ['type' => $event->getAggregateType(), 'id' => $event->getAggregateId(), 'seq' => $event->getSequenceNumber()]; } return new self(json_encode($data)); }
/** * @param EventMessageInterface $event * @return array */ private function toArray(EventMessageInterface $event) { $dateTimeFormat = $this->connection->getDatabasePlatform()->getDateTimeFormatString(); $timestamp = $event->getTimestamp(); $data = ['event_id' => (string) $event->getId(), 'event_date' => $timestamp->format($dateTimeFormat), 'event_date_u' => $timestamp->format('u'), 'payload_type' => $event->getPayloadType(), 'payload' => $this->serializer->serialize($event->getPayload()), 'metadata' => $this->serializer->serialize($event->getMetadata())]; if ($event instanceof DomainEventMessageInterface) { $aggregateId = $event->getAggregateId(); if (!is_int($aggregateId)) { $aggregateId = (string) $aggregateId; } $data = array_merge($data, ['aggregate_type' => $event->getAggregateType(), 'aggregate_id' => $aggregateId, 'sequence_number' => $event->getSequenceNumber()]); } return $data; }