Passed
Pull Request — master (#33)
by Marc
05:58
created

Builder::ordening()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 9
ccs 0
cts 0
cp 0
rs 9.6666
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 6
1
<?php
2
declare(strict_types = 1);
3
4
namespace TBolier\RethinkQL\Query;
5
6
use TBolier\RethinkQL\Message\MessageInterface;
7
use TBolier\RethinkQL\RethinkInterface;
8
9
class Builder implements BuilderInterface
10
{
11
    /**
12
     * @var RethinkInterface
13
     */
14
    private $rethink;
15
16
    /**
17
     * @var Table
18
     */
19
    private $table;
20
21
    /**
22
     * @var DatabaseInterface
23
     */
24
    private $database;
25
26
    /**
27
     * @var OrdeningInterface
28
     */
29
    private $ordering;
30
31
    /**
32
     * @var MessageInterface
33
     */
34
    private $message;
35 14
36
    /**
37 14
     * @param RethinkInterface $rethink
38 14
     * @param MessageInterface $message
39 14
     */
40
    public function __construct(RethinkInterface $rethink, MessageInterface $message)
41
    {
42
        $this->rethink = $rethink;
43
        $this->message = $message;
44
    }
45 11
46
    /**
47 11
     * @param string $name
48 8
     * @return TableInterface
49
     */
50
    public function table(string $name): TableInterface
51 11
    {
52
        if ($this->table) {
53 11
            unset($this->table);
54
        }
55
56
        $this->table = new Table($name, $this->rethink, $this->message);
57
58
        return $this->table;
59 14
    }
60
61 14
    /**
62 14
     * @return DatabaseInterface
63
     */
64
    public function database(): DatabaseInterface
65 14
    {
66
        if ($this->database) {
67 14
            unset($this->database);
68
        }
69
70
        $this->database = new Database($this->rethink, $this->message);
71
72
        return $this->database;
73
    }
74
75
    /**
76
     * @param string $key
77
     * @return OrdeningInterface
78
     */
79
    public function ordening(string $key): OrdeningInterface
80
    {
81
        if ($this->ordering) {
82
            unset($this->ordering);
83
        }
84
85
        $this->ordering = new Ordening($key, $this->rethink, $this->message);
86
87
        return $this->ordering;
88
    }
89
}
90