Skip to content

Commit 7f93ee1

Browse files
committed
Add database
1 parent d22378e commit 7f93ee1

101 files changed

Lines changed: 153 additions & 122 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

composer.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
}
1010
],
1111
"require": {
12-
"php": ">=5.6.0",
12+
"php": ">=7.4",
1313
"packaged/helpers": "^1.0||^2.0"
1414
},
1515
"require-dev": {
16-
"phpunit/phpunit": "~4.8.0",
16+
"phpunit/phpunit": "~8.0",
1717
"satooshi/php-coveralls": "~1.0.0"
1818
},
1919
"autoload": {

phpunit.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,9 @@
88
convertWarningsToExceptions="true"
99
processIsolation="false"
1010
stopOnFailure="false"
11-
syntaxCheck="false"
1211
>
1312
<testsuites>
14-
<testsuite>
13+
<testsuite name="tests">
1514
<directory>tests</directory>
1615
</testsuite>
1716
</testsuites>

src/Assembler/MySQL/MySQLAssembler.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public function assembleField(FieldExpression $field)
3232
if($field->hasTable())
3333
{
3434
return $this->assembleTableExpression($field->getTable())
35-
. '.' . $this->escapeField($field->getField());
35+
. '.' . $this->escapeField($field->getField());
3636
}
3737
else
3838
{
@@ -42,6 +42,10 @@ public function assembleField(FieldExpression $field)
4242

4343
public function assembleTableExpression(TableExpression $expr)
4444
{
45+
if($expr->getDatabase())
46+
{
47+
return $this->escapeField($expr->getDatabase()) . '.' . $this->escapeField($expr->getTableName());
48+
}
4549
return $this->escapeField($expr->getTableName());
4650
}
4751

src/Assembler/QueryAssembler.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,6 @@ public function escapeField($field)
169169

170170
public function escapeValue($value)
171171
{
172-
return '"' . addcslashes($value, '"') . '"';
172+
return $value ? '"' . addcslashes($value, '"') . '"' : '""';
173173
}
174174
}

src/Expression/TableExpression.php

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@
44
class TableExpression implements IExpression
55
{
66
protected $_table;
7+
protected $_database;
8+
9+
/**
10+
* @return string|null
11+
*/
12+
public function getDatabase()
13+
{
14+
return $this->_database;
15+
}
16+
17+
public function setDatabase($database)
18+
{
19+
$this->_database = $database;
20+
return $this;
21+
}
722

823
public function setTableName($table)
924
{
@@ -18,11 +33,12 @@ public function getTableName()
1833

1934
/**
2035
* @param $table
36+
* @param $database
2137
*
22-
* @return static
38+
* @return \Packaged\QueryBuilder\Expression\TableExpression
2339
*/
24-
public static function create($table)
40+
public static function create($table, $database = null)
2541
{
26-
return (new static)->setTableName($table);
42+
return (new static())->setTableName($table)->setDatabase($database);
2743
}
2844
}

tests/Assembler/AssemblerTest.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@
1414
use Packaged\QueryBuilder\SelectExpression\AllSelectExpression;
1515
use Packaged\QueryBuilder\Statement\IStatement;
1616
use Packaged\QueryBuilder\Statement\QueryStatement;
17+
use PHPUnit\Framework\TestCase;
1718

18-
class AssemblerTest extends \PHPUnit_Framework_TestCase
19+
class AssemblerTest extends TestCase
1920
{
2021
/**
2122
* @expectedException \Exception
@@ -46,9 +47,9 @@ public function testAssemblerPrepare()
4647
[
4748
'AND' => [
4849
EqualPredicate::create('field2', null),
49-
NotEqualPredicate::create('field3', null)
50+
NotEqualPredicate::create('field3', null),
5051
],
51-
'OR' => BetweenPredicate::create('field4', 123, 456)
52+
'OR' => BetweenPredicate::create('field4', 123, 456),
5253
]
5354
);
5455
$assembler = new QueryAssembler($stm, true);
@@ -114,7 +115,7 @@ public function testInPredicate()
114115
)
115116
);
116117

117-
$this->setExpectedException(
118+
$this->expectException(
118119
'\Packaged\QueryBuilder\Exceptions\Assembler\QueryBuilderAssemblerException',
119120
'Cannot assemble an empty ArrayExpression'
120121
);

tests/Assembler/CQL/CqlAssemblerTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@
1515
use Packaged\QueryBuilder\SelectExpression\AllSelectExpression;
1616
use Packaged\QueryBuilder\SelectExpression\CountSelectExpression;
1717
use Packaged\QueryBuilder\SelectExpression\FieldSelectExpression;
18+
use PHPUnit\Framework\TestCase;
1819

19-
class CqlAssemblerTest extends \PHPUnit_Framework_TestCase
20+
class CqlAssemblerTest extends TestCase
2021
{
2122
public function testBetween()
2223
{

tests/Assembler/MySQL/MySQLAssemblerTest.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,9 @@
1111
use Packaged\QueryBuilder\SelectExpression\MatchSelectExpression;
1212
use Packaged\QueryBuilder\SelectExpression\MaxSelectExpression;
1313
use Packaged\QueryBuilder\SelectExpression\SubQuerySelectExpression;
14+
use PHPUnit\Framework\TestCase;
1415

15-
class MySQLAssemblerTest extends \PHPUnit_Framework_TestCase
16+
class MySQLAssemblerTest extends TestCase
1617
{
1718
public function testTableName()
1819
{
@@ -28,6 +29,12 @@ public function testTableName()
2829
TableExpression::create('mytable')
2930
)
3031
);
32+
$this->assertEquals(
33+
'`mydb`.`mytable`',
34+
MySQLAssembler::stringify(
35+
TableExpression::create('mytable', 'mydb')
36+
)
37+
);
3138
}
3239

3340
public function testFieldName()

tests/Builder/Expect/QueryBuilderDeleteTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33

44
use Packaged\QueryBuilder\Assembler\QueryAssembler;
55
use Packaged\QueryBuilder\Builder\QueryBuilder;
6+
use PHPUnit\Framework\TestCase;
67

7-
class QueryBuilderDeleteTest extends \PHPUnit_Framework_TestCase
8+
class QueryBuilderDeleteTest extends TestCase
89
{
910
public function testDelete()
1011
{

tests/Builder/Expect/QueryBuilderSelectTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33

44
use Packaged\QueryBuilder\Assembler\QueryAssembler;
55
use Packaged\QueryBuilder\Builder\QueryBuilder;
6+
use PHPUnit\Framework\TestCase;
67

7-
class QueryBuilderSelectTest extends \PHPUnit_Framework_TestCase
8+
class QueryBuilderSelectTest extends TestCase
89
{
910
public function testSelect()
1011
{

0 commit comments

Comments
 (0)