public function testAssemble() { $clause = new LimitClause(); $clause->setLimit(10); $this->assertEquals('LIMIT 10', QueryAssembler::stringify($clause)); $clause->setOffset(5); $this->assertEquals('LIMIT 5,10', QueryAssembler::stringify($clause)); $stmt = QueryBuilder::select(AllSelectExpression::create())->limit(3); $assembler = new QueryAssembler($stmt); $this->assertEquals('SELECT * LIMIT ?', $assembler->getQuery()); $this->assertEquals([3], $assembler->getParameters()); $stmt = QueryBuilder::select(AllSelectExpression::create())->limitWithOffset(0, 3); $assembler = new QueryAssembler($stmt); $this->assertEquals('SELECT * LIMIT ?,?', $assembler->getQuery()); $this->assertEquals([0, 3], $assembler->getParameters()); $offset = NumericExpression::create(0); $limit = NumericExpression::create(3); $stmt = QueryBuilder::select(AllSelectExpression::create())->limitWithOffset($offset, $limit); $assembler = new QueryAssembler($stmt); $this->assertEquals('SELECT * LIMIT ?,?', $assembler->getQuery()); $this->assertEquals([0, 3], $assembler->getParameters()); $offset->setValue(25); $limit->setValue(38); $this->assertEquals('SELECT * LIMIT ?,?', $assembler->getQuery()); $this->assertEquals([25, 38], $assembler->getParameters()); }
public function setOffset($offset) { if (!$offset instanceof ValueExpression) { $offset = NumericExpression::create($offset); } $this->_offset = $offset; return $this; }
public function usingTimestamp($timestamp) { /** * @var $this IStatement */ $clause = $this->getClause('USING'); if ($clause === null) { $clause = new UsingClause(); $this->addClause($clause); } if (!$timestamp instanceof NumericExpression) { $timestamp = NumericExpression::create((int) $timestamp); } $clause->setTimestamp($timestamp); return $this; }
public function testAssemble() { $expression = DivisionExpression::create(FieldSelectExpression::create('fieldname'), NumericExpression::create(4)); $this->assertEquals('(fieldname / 4)', QueryAssembler::stringify($expression)); }
protected function _getCounterValue(QlDao $dao, $field, $value) { $newValue = $dao->{$field}; if ($newValue instanceof Counter) { if ($newValue->isIncrement()) { $value = IncrementExpression::create($field, $newValue->getIncrement()); } elseif ($newValue->isDecrement()) { $value = DecrementExpression::create($field, $newValue->getDecrement()); } elseif ($newValue->isFixedValue()) { $value = NumericExpression::create($newValue->calculated()); } } return $value; }
public function assembleValueExpression(ValueExpression $expression) { $value = $expression->getValue(); if ($value === null) { return $this->_assemblePrepared() ?: 'NULL'; } else { if (is_scalar($value)) { if (!is_string($value) && is_numeric($value)) { return $this->assembleNumericExpression(NumericExpression::create($value)); } else { if (is_bool($value)) { return $this->assembleBooleanExpression(BooleanExpression::create($value)); } } } else { if (is_array($value)) { return $this->assembleArrayExpression(ArrayExpression::create($value)); } } } return $this->assembleStringExpression(StringExpression::create($value)); }
public function testExecute() { $datastore = new MockQlDataStore(); $connection = new MockAbstractQlDataConnection(); $datastore->setConnection($connection); $dao = new MockQlDao(); $dao->id = 4; $dao->display = 'John Smith'; $dao->boolTest = false; $datastore->save($dao); $datastore->execute(QueryBuilder::deleteFrom($dao->getTableName(), (new EqualPredicate())->setField('id')->setExpression(NumericExpression::create(4)))); $this->assertEquals('DELETE FROM `mock_ql_daos` WHERE `id` = ?', $connection->getExecutedQuery()); $this->assertEquals([4], $connection->getExecutedQueryValues()); }
public function testAssemble() { $expression = MultiplyExpression::create(FieldExpression::create('fieldname'), NumericExpression::create(4)); $this->assertEquals('(fieldname * 4)', QueryAssembler::stringify($expression)); }