Ejemplo n.º 1
0
 /**
  * @param Saga $saga
  * @return void
  */
 public function commit(Saga $saga)
 {
     if (!$saga->isActive()) {
         $this->storage->delete($saga->getId()->getValue());
         return;
     }
     $associationValues = $this->associationValuesToArray($saga->getAssociationValues());
     $this->storage->update(get_class($saga), $saga->getId()->getValue(), $associationValues, $this->serializer->serialize($saga));
 }
Ejemplo n.º 2
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.º 3
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;
 }
Ejemplo n.º 5
0
 /**
  * @param mixed $value
  * @return string
  */
 public function serialize($value) : string
 {
     return $this->serializer->serialize($value);
 }
Ejemplo n.º 6
0
 /**
  * @param Identity $aggregateId
  * @param string $aggregateType
  * @param Event $event
  */
 private function saveEvent(Identity $aggregateId, string $aggregateType, Event $event)
 {
     $eventData = EventDescriptor::record($aggregateId->getValue(), $aggregateType, $event->getEventName(), $this->serializer->serialize($event), $event->getVersion());
     $this->storage->append($eventData);
 }