Code Duplication    Length = 30-30 lines in 3 locations

src/Repo2/QueryBuilder/DDL/CreateTable.php 1 location

@@ 35-64 (lines=30) @@
32
use Repo2\QueryBuilder\ExpressionBag;
33
use Repo2\QueryBuilder\ExpressionInterface;
34
35
class CreateTable implements ExpressionInterface
36
{
37
    /** @var Reference */
38
    private $table;
39
40
    /** @var ExpressionBag */
41
    private $columnsBag;
42
43
    /**
44
     * @param Reference $table
45
     * @param ExpressionBag $columnsBag
46
     */
47
    public function __construct(Reference $table, ExpressionBag $columnsBag)
48
    {
49
        $this->table = $table;
50
        $this->columnsBag = $columnsBag;
51
    }
52
53
    /**
54
     * @inheritDoc
55
     */
56
    public function compile(DriverInterface $driver)
57
    {
58
        if ($this->columnsBag->isEmpty()) {
59
            throw new CompileException('The table definition requires columns list.');
60
        }
61
        return 'CREATE TABLE ' . $this->table->compile($driver)
62
            . '(' . $this->columnsBag->concat($driver, ', ') . ')';
63
    }
64
}
65

src/Repo2/QueryBuilder/Query/SelectQuery.php 1 location

@@ 34-63 (lines=30) @@
31
use Repo2\QueryBuilder\Expression\Reference;
32
use Repo2\QueryBuilder\ExpressionBag;
33
34
class SelectQuery extends FilterQuery
35
{
36
    /** @var Reference */
37
    private $table;
38
39
    /** @var ExpressionBag */
40
    private $columnsBag;
41
42
    /**
43
     * @param Reference $table
44
     * @param ExpressionBag $columnsBag
45
     */
46
    public function __construct(Reference $table, ExpressionBag $columnsBag)
47
    {
48
        $this->table = $table;
49
        $this->columnsBag = $columnsBag;
50
    }
51
52
    /**
53
     * @inheritDoc
54
     */
55
    protected function compileBase(DriverInterface $driver)
56
    {
57
        if ($this->columnsBag->isEmpty()) {
58
            throw new CompileException('Select query requires columns list.');
59
        }
60
        return 'SELECT ' . $this->columnsBag->concat($driver, ', ')
61
            . ' FROM ' . $this->table->compile($driver);
62
    }
63
}
64

src/Repo2/QueryBuilder/Query/UpdateQuery.php 1 location

@@ 34-63 (lines=30) @@
31
use Repo2\QueryBuilder\ExpressionBag;
32
use Repo2\QueryBuilder\Exception\CompileException;
33
34
class UpdateQuery extends FilterQuery
35
{
36
    /** @var Reference */
37
    private $table;
38
39
    /** @var ExpressionBag */
40
    private $valuesBag;
41
42
    /**
43
     * @param Reference $table
44
     * @param ExpressionBag $valuesBag
45
     */
46
    public function __construct(Reference $table, ExpressionBag $valuesBag)
47
    {
48
        $this->table = $table;
49
        $this->valuesBag = $valuesBag;
50
    }
51
52
    /**
53
     * @inheritDoc
54
     */
55
    protected function compileBase(DriverInterface $driver)
56
    {
57
        if ($this->valuesBag->isEmpty()) {
58
            throw new CompileException('No values found for update query.');
59
        }
60
        return 'UPDATE ' . $this->table->compile($driver)
61
            . ' SET ' . $this->valuesBag->concat($driver, ', ');
62
    }
63
}
64