Exemplo n.º 1
0
 /**
  * @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;
 }
Exemplo n.º 2
0
 /**
  * @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);
 }
Exemplo n.º 3
0
 /**
  * @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);
 }
Exemplo n.º 4
0
 /**
  * @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']);
 }