Example #1
0
 /**
  * @param string $rql
  * @param string $exceptionMessage
  * @return void
  *
  * @covers Parser::parse()
  * @dataProvider dataSyntaxError()
  */
 public function testSyntaxError($rql, $exceptionMessage)
 {
     $this->setExpectedException('Xiag\\Rql\\Parser\\Exception\\SyntaxErrorException', $exceptionMessage);
     $lexer = new Lexer();
     $parser = Parser::createDefault();
     $parser->parse($lexer->tokenize($rql));
 }
Example #2
0
 public function execute(Request $request, Response $response, callable $next = null)
 {
     $collectionname = $request->getAttribute('collectionname');
     $collection = new TableGateway($collectionname, $this->boot()->db);
     $range = $request->getHeader('Range');
     $lexer = new \Xiag\Rql\Parser\Lexer();
     $tokens = $lexer->tokenize($request->getUri()->getQuery());
     $parser = \Xiag\Rql\Parser\Parser::createDefault();
     //file_put_contents('xxxx', print_r($parser->parse($tokens), true));
     $rql = $parser->parse($tokens);
     $select = $collection->getSql()->select();
     $sort = $rql->getSort();
     if ($sort) {
         foreach ($sort->getFields() as $field => $descending) {
             //file_put_contents('xxxx', print_r($field, true));
             $select->order("{$field} " . ($descending > 0 ? 'ASC' : 'DESC'));
         }
     }
     $result = $collection->selectWith($select);
     return $response->withHeader('Content-Type', 'application/json')->withBody($this->toJsonStream($result->toArray()));
 }
 /**
  * execute a query againts the test db
  *
  * @param string   $query   query to execute
  * @param MongoOdm $visitor visitor we are testing
  *
  * @return array
  */
 private function runTestQuery($query, $visitor)
 {
     $lexer = new Lexer();
     $parser = RqlParser::createDefault();
     $rqlQuery = $parser->parse($lexer->tokenize($query));
     $builder = $visitor->visit($rqlQuery);
     $results = [];
     foreach ($builder->getQuery()->execute() as $doc) {
         $results[] = $doc;
     }
     return $results;
 }