Completed
Push — master ( 1e376d...b0060a )
by Changwan
05:50
created

QueryBuilder   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 8

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 82
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0
wmc 9
lcom 1
cbo 8

9 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A select() 0 4 1
A insert() 0 4 1
A update() 0 4 1
A delete() 0 4 1
A create() 0 4 1
A rename() 0 4 1
A drop() 0 4 1
A truncate() 0 4 1
1
<?php
2
namespace Wandu\Database;
3
4
use Wandu\Database\Query\CreateQuery;
5
use Wandu\Database\Query\DeleteQuery;
6
use Wandu\Database\Query\DropQuery;
7
use Wandu\Database\Query\InsertQuery;
8
use Wandu\Database\Query\RenameQuery;
9
use Wandu\Database\Query\SelectQuery;
10
use Wandu\Database\Query\TruncateQuery;
11
use Wandu\Database\Query\UpdateQuery;
12
13
/**
14
 * @todo ALTER add column / drop column / modify column(rename column) / drop constraint / add constraint
15
 */
16
class QueryBuilder
17
{
18
    /** @var string */
19
    protected $table;
20
21
    /**
22
     * @param string $table
23
     */
24 10
    public function __construct($table)
25
    {
26 10
        $this->table = $table;
27 10
    }
28
29
    /**
30
     * @param array $columns
31
     * @return \Wandu\Database\Query\SelectQuery
32
     */
33 1
    public function select(array $columns = ['*'])
34
    {
35 1
        return new SelectQuery($this->table, $columns);
36
    }
37
38
    /**
39
     * @param array|\Traversable $values
40
     * @return \Wandu\Database\Query\InsertQuery
41
     */
42 2
    public function insert($values)
43
    {
44 2
        return new InsertQuery($this->table, $values);
45
    }
46
    
47
    /**
48
     * @param array $attributes
49
     * @return \Wandu\Database\Query\UpdateQuery
50
     */
51 1
    public function update(array $attributes = [])
52
    {
53 1
        return new UpdateQuery($this->table, $attributes);
54
    }
55
56
    /**
57
     * @return \Wandu\Database\Query\DeleteQuery
58
     */
59 1
    public function delete()
60
    {
61 1
        return new DeleteQuery($this->table);
62
    }
63
64
    /**
65
     * @param callable $defineHandler
66
     * @return \Wandu\Database\Query\CreateQuery
67
     */
68 2
    public function create(callable $defineHandler = null)
69
    {
70 2
        return new CreateQuery($this->table, $defineHandler);
71
    }
72
73
    /**
74
     * @param string $newTable
75
     * @return \Wandu\Database\Query\RenameQuery
76
     */
77 1
    public function rename($newTable)
78
    {
79 1
        return new RenameQuery($this->table, $newTable);
80
    }
81
82
    /**
83
     * @return \Wandu\Database\Query\DropQuery
84
     */
85 1
    public function drop()
86
    {
87 1
        return new DropQuery($this->table);
88
    }
89
90
    /**
91
     * @return \Wandu\Database\Query\TruncateQuery
92
     */
93 1
    public function truncate()
94
    {
95 1
        return new TruncateQuery($this->table);
96
    }
97
}
98