/** * @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)); }
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; }