Exemple #1
0
 /**
  * {@inheritdoc}
  */
 public function execute(FragmentInterface $query, Connection $connection, MapperInterface $mapper, $field = null, $type = null)
 {
     $result = $connection->executeFragment(new Node(['WITH set AS (', $query, ') SELECT to_json(set) AS json FROM set']));
     $value = pg_fetch_assoc($result);
     $value = json_decode($value['json'], true);
     pg_free_result($result);
     if ($field !== null) {
         $value = $value[$field];
     }
     if ($type !== null) {
         $value = $mapper->fromPg($value, $type);
     }
     return $value;
 }
 /**
  * {@inheritdoc}
  */
 public function query(FragmentInterface $query, Connection $connection, MapperInterface $mapper, $field = null, $type = null)
 {
     $cursor = self::next();
     $query = new Node('DECLARE ', $cursor, ' CURSOR FOR (SELECT to_json(set) AS json FROM (', $query, ') AS set)');
     $connection->executeFragment($query);
     while ($result = $connection->executeFragment(new Node('FETCH 10 FROM ', $cursor))) {
         if (pg_num_rows($result) === 0) {
             break;
         }
         while ($value = pg_fetch_assoc($result)) {
             $value = json_decode($value['json'], true);
             if ($field !== null) {
                 $value = $value[$field];
             }
             if ($type !== null) {
                 $value = $mapper->fromPg($value, $type);
             }
             (yield $value);
         }
         pg_free_result($result);
     }
     pg_free_result($result);
 }
Exemple #3
0
 /**
  * {@inheritdoc}
  */
 public function query(FragmentInterface $query, Connection $connection, MapperInterface $mapper, $field = null, $type = null)
 {
     $result = $connection->executeFragment(new Node('SELECT to_json(set) AS json FROM (', $query, ') AS set'));
     while ($value = pg_fetch_assoc($result)) {
         $value = json_decode($value['json'], true);
         if ($field !== null) {
             $value = $value[$field];
         }
         if ($type !== null) {
             $value = $mapper->fromPg($value, $type);
         }
         (yield $value);
     }
     pg_free_result($result);
 }
 /**
  * @param MapperInterface $mapper
  * @param Connection      $connection
  * @param Node            $cursor
  * @param string          $field
  * @param string          $type
  *
  * @return \Generator
  */
 private function process(MapperInterface $mapper, Connection $connection, Node $cursor, $field = null, $type = null)
 {
     while ($result = $connection->executeFragment($cursor)) {
         if (pg_num_rows($result) === 0) {
             break;
         }
         while ($value = pg_fetch_assoc($result)) {
             $value = json_decode($value['json'], true);
             if ($field !== null) {
                 $value = $value[$field];
             }
             if ($type !== null) {
                 $value = $mapper->fromPg($value, $type);
             }
             (yield $value);
         }
         pg_free_result($result);
     }
     pg_free_result($result);
 }
Exemple #5
0
 /**
  * {@inheritdoc}
  */
 public function execute(FragmentInterface $query, Connection $connection, MapperInterface $mapper, $field = null, $type = null)
 {
     return $connection->executeFragment($query);
 }
Exemple #6
0
 /**
  * {@inheritdoc}
  */
 public function query(FragmentInterface $query, Connection $connection, MapperInterface $mapper, $field = null, $type = null)
 {
     $result = $connection->executeFragment($query);
     pg_free_result($result);
 }
Exemple #7
0
 /**
  * {@inheritdoc}
  */
 public function execute(FragmentInterface $query, Connection $connection, MapperInterface $mapper, $field = null, $type = null)
 {
     $result = $connection->executeFragment(new Node(['WITH set AS (', $query, ') SELECT to_json(set) AS json FROM set']));
     return $this->process($mapper, $result, $field, $type);
 }