Skip to content

Commit

Permalink
Add ALLOW FILTERING clause for CQL
Browse files Browse the repository at this point in the history
  • Loading branch information
Tom Kay committed Nov 27, 2014
1 parent 5ce7226 commit 3d578ef
Show file tree
Hide file tree
Showing 4 changed files with 67 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/Assembler/CQL/CqlAssembler.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
namespace Packaged\QueryBuilder\Assembler\CQL;

use Packaged\QueryBuilder\Assembler\MySQL\MySQLAssembler;
use Packaged\QueryBuilder\Clause\CQL\AllowFilteringClause;
use Packaged\QueryBuilder\Expression\FieldExpression;
use Packaged\QueryBuilder\Expression\TableExpression;
use Packaged\QueryBuilder\Expression\ValueExpression;
Expand All @@ -15,7 +16,11 @@ class CqlAssembler extends MySQLAssembler
{
public function assembleSegment($segment)
{
if($segment instanceof AllSelectExpression)
if($segment instanceof AllowFilteringClause)
{
return 'ALLOW FILTERING';
}
else if($segment instanceof AllSelectExpression)
{
$segment->setTable(null);
}
Expand Down
23 changes: 23 additions & 0 deletions src/Clause/CQL/AllowFilteringClause.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?php
namespace Packaged\QueryBuilder\Clause\CQL;

use Packaged\QueryBuilder\Clause\IClause;

class AllowFilteringClause implements IClause
{
/**
* @return string
*/
public function getAction()
{
return 'ALLOW_FILTERING';
}

/**
* @return bool
*/
public function allowMultiple()
{
return false;
}
}
14 changes: 14 additions & 0 deletions src/Statement/CQL/CqlQueryStatement.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php
namespace Packaged\QueryBuilder\Statement\CQL;

use Packaged\QueryBuilder\Statement\QueryStatement;

class CqlQueryStatement extends QueryStatement
{
protected function _getOrder()
{
$order = parent::_getOrder();
$order[] = 'ALLOW_FILTERING';
return $order;
}
}
24 changes: 24 additions & 0 deletions tests/Statement/CqlQueryStatementTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?php
namespace Packaged\Tests\QueryBuilder\Statement;

use Packaged\QueryBuilder\Assembler\CQL\CqlAssembler;
use Packaged\QueryBuilder\Clause\CQL\AllowFilteringClause;
use Packaged\QueryBuilder\Clause\SelectClause;
use Packaged\QueryBuilder\SelectExpression\AllSelectExpression;
use Packaged\QueryBuilder\Statement\CQL\CqlQueryStatement;

class CqlQueryStatementTest extends \PHPUnit_Framework_TestCase
{
public function testAssemble()
{
$statement = new CqlQueryStatement();
$select = new SelectClause();
$select->addExpression(new AllSelectExpression());
$statement->addClause($select);
$statement->addClause(new AllowFilteringClause());
$this->assertEquals(
'SELECT * ALLOW FILTERING',
CqlAssembler::stringify($statement)
);
}
}

0 comments on commit 3d578ef

Please sign in to comment.