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