Esempio n. 1
0
 /**
  * @inheritdoc
  */
 public function has(AggregateIdInterface $id, $version)
 {
     if (!$this->redis->hexists(static::KEY_NAMESPACE, (string) $id)) {
         return false;
     }
     $snapshot = $this->serializer->deserialize($this->redis->hget(static::KEY_NAMESPACE, (string) $id), 'array', 'json');
     return $snapshot['version'] === $version;
 }
 private function processSnapshot($metadata)
 {
     if (false === $metadata) {
         return null;
     }
     /** @var AggregateRootInterface $aggregate */
     $aggregate = $this->serializer->deserialize($metadata['payload'], $metadata['type'], 'json');
     return new Snapshot(AggregateId::fromString($metadata['aggregate_id']), $aggregate, $metadata['version'], new \DateTimeImmutable("@" . $metadata['created_at']));
 }
Esempio n. 3
0
 private function processEvents($serializedEvents)
 {
     if (!$serializedEvents) {
         throw new EventStreamNotFoundException('The event stream doesn\'t exists');
     }
     $eventStream = [];
     foreach ($serializedEvents as $eventData) {
         if (is_string($eventData)) {
             $eventData = $this->serializer->deserialize($eventData, 'array', 'json');
         }
         $payload = $this->serializer->deserialize($eventData['payload'], $eventData['type'], 'json');
         $eventStream[] = new DomainMessage($eventData['aggregate_id'], $eventData['version'], $payload, \DateTimeImmutable::createFromFormat('Y-m-d\\TH:i:s.u', $eventData['recorded_on']));
     }
     return $eventStream;
 }
 /**
  * @param $id
  * @param $expectedDeserializedRedisData
  */
 protected function mockRedisHasAndGetData($id, $expectedDeserializedRedisData)
 {
     $this->client->hexists(RedisSnapshotAdapter::KEY_NAMESPACE, (string) $id)->willReturn(true)->shouldBeCalledTimes(1);
     $this->client->hget(RedisSnapshotAdapter::KEY_NAMESPACE, (string) $id)->willReturn('redis_data')->shouldBeCalledTimes(1);
     $this->serializer->deserialize('redis_data', 'array', 'json')->willReturn($expectedDeserializedRedisData);
 }