public function testAssemble()
 {
     $expression = new NumericExpression();
     $expression->setValue(1);
     $this->assertEquals('1', QueryAssembler::stringify($expression));
     $expression->setValue('1a');
     $this->assertEquals('1', QueryAssembler::stringify($expression));
     $expression->setValue(1.2);
     $this->assertEquals('1.2', QueryAssembler::stringify($expression));
     $expression->setValue('abc');
     $this->assertEquals('0', QueryAssembler::stringify($expression));
 }
Ejemplo n.º 2
0
 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());
 }
Ejemplo n.º 3
0
 public function setOffset($offset)
 {
     if (!$offset instanceof ValueExpression) {
         $offset = NumericExpression::create($offset);
     }
     $this->_offset = $offset;
     return $this;
 }
Ejemplo n.º 4
0
 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));
 }
Ejemplo n.º 6
0
 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;
 }
Ejemplo n.º 7
0
 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));
 }
Ejemplo n.º 8
0
 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));
 }