/** * @param string $data * @param string $type * @return mixed */ public function deserialize(string $data, string $type) { /* @var $deserialized Saga */ $deserialized = $this->serializer->deserialize($data, $type); $this->factory->hydrate($deserialized); return $deserialized; }
/** * @param Identity $sagaIdentity * @param string $sagaType * @return Saga */ public function load(Identity $sagaIdentity, string $sagaType) { $sagaData = $this->storage->findById($sagaIdentity->getValue()); if (empty($sagaData)) { return null; } return $this->serializer->deserialize($sagaData, $sagaType); }
/** * @param Identity $identity * @param EventStorage $eventStorage * @param Serializer $serializer */ private function prepareSomeEvents(Identity $identity, EventStorage $eventStorage, Serializer $serializer) { // This is not the preferred way, but used for simplicity! You should use commands to achieve this. $event = new CreatedEvent($identity); $event->setVersion(1); $eventStorage->append(EventDescriptor::record($identity->getValue(), 'aggregateType', $event->getEventName(), $serializer->serialize($event), $event->getVersion())); $event = new DemonstratedEvent($identity); $event->setVersion(2); $eventStorage->append(EventDescriptor::record($identity->getValue(), 'aggregateType', $event->getEventName(), $serializer->serialize($event), $event->getVersion())); }
/** * @param Identity $aggregateId * @return Events * @throws AggregateNotFoundException */ public function getEventsForAggregate(Identity $aggregateId) : Events { if (!$this->storage->contains($aggregateId->getValue())) { throw new AggregateNotFoundException($aggregateId); } $eventData = $this->storage->find($aggregateId->getValue()); $events = array_map(function (EventDescriptor $data) : Event { return $this->serializer->deserialize($data->getPayload(), $this->eventMap->getClassByEventName($data->getEvent())); }, $eventData); return new Events($events); }
/** * @param array $query * @param int $offset * @param int $limit * @return Document[] */ private function query(array $query, int $offset, int $limit) : array { $params = $this->createParams(); $params['body'] = ['query' => $query]; $params['from'] = $offset; $params['size'] = $limit; $result = $this->client->search($params); if (empty($result['hits']['hits'])) { return []; } return array_map(function (array $hit) : Document { return $this->serializer->deserialize($this->serializer->serialize($hit['_source']), $this->documentClass); }, $result['hits']['hits']); }
/** * @param int $count * @param ElasticClient $client * @param \Apha\Serializer\Serializer $serializer * @return Document[] */ public function documentsProvider(int $count, ElasticClient $client, \Apha\Serializer\Serializer $serializer) : array { $documents = []; $result = []; for ($i = 0; $i < $count; $i++) { $documents[$i] = new ElasticSearchStateStorageTest_Document('foo', 'bar'); $result[] = ['_source' => $serializer->serialize($documents[$i])]; } return $result; }