Ejemplo 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;
 }
Ejemplo 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);
 }
Ejemplo n.º 3
0
 /**
  * @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()));
 }
Ejemplo n.º 4
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);
 }
Ejemplo n.º 5
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']);
 }
 /**
  * @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;
 }