Completed
Pull Request — master (#22)
by Guido
17:25 queued 13:24
created

Fields::smallIncrements()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 8
Ratio 100 %

Code Coverage

Tests 4
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 8
loc 8
ccs 4
cts 4
cp 1
rs 9.4286
cc 2
eloc 4
nc 2
nop 2
crap 2
1
<?php
2
3
namespace LaravelDoctrine\Fluent\Builders\Traits;
4
5
use Doctrine\DBAL\Types\Type;
6
use LaravelDoctrine\Fluent\Buildable;
7
use LaravelDoctrine\Fluent\Builders\Field;
8
9
trait Fields
10
{
11
    /**
12
     * @param string        $type
13
     * @param string        $name
14
     * @param callable|null $callback
15
     *
16
     * @return Field
17
     */
18 88
    public function field($type, $name, callable $callback = null)
19
    {
20 88
        $field = Field::make($this->getBuilder(), $type, $name);
21
22 88
        $this->callbackAndQueue($field, $callback);
23
24 88
        return $field;
25
    }
26
27
    /**
28
     * @param string        $name
29
     * @param callable|null $callback
30
     *
31
     * @return Field
32
     */
33 60
    public function string($name, callable $callback = null)
34
    {
35 60
        return $this->field(Type::STRING, $name, $callback);
36
    }
37
38
    /**
39
     * @param string        $name
40
     * @param callable|null $callback
41
     *
42
     * @return Field
43
     */
44 12
    public function text($name, callable $callback = null)
45
    {
46 12
        return $this->field(Type::TEXT, $name, $callback);
47
    }
48
49
    /**
50
     * @param string        $name
51
     * @param callable|null $callback
52
     *
53
     * @return Field
54
     */
55 32
    public function integer($name, callable $callback = null)
56
    {
57 32
        return $this->field(Type::INTEGER, $name, $callback);
58
    }
59
60
    /**
61
     * @param string        $name
62
     * @param callable|null $callback
63
     *
64
     * @return Field
65
     */
66 20
    public function smallInteger($name, callable $callback = null)
67
    {
68 20
        return $this->field(Type::SMALLINT, $name, $callback);
69
    }
70
71
    /**
72
     * @param string        $name
73
     * @param callable|null $callback
74
     *
75
     * @return Field
76
     */
77 20
    public function bigInteger($name, callable $callback = null)
78
    {
79 20
        return $this->field(Type::BIGINT, $name, $callback);
80
    }
81
82
    /**
83
     * @param string        $name
84
     * @param callable|null $callback
85
     *
86
     * @return Field
87
     */
88 12
    public function guid($name, callable $callback = null)
89
    {
90 12
        return $this->field(Type::GUID, $name, $callback);
91
    }
92
93
    /**
94
     * @param string        $name
95
     * @param callable|null $callback
96
     *
97
     * @return Field
98
     */
99 12
    public function blob($name, callable $callback = null)
100
    {
101 12
        return $this->field(Type::BLOB, $name, $callback);
102
    }
103
104
    /**
105
     * @param string        $name
106
     * @param callable|null $callback
107
     *
108
     * @return Field
109
     */
110 12
    public function object($name, callable $callback = null)
111
    {
112 12
        return $this->field(Type::OBJECT, $name, $callback);
113
    }
114
115
    /**
116
     * @param string        $name
117
     * @param callable|null $callback
118
     *
119
     * @return Field
120
     */
121 12
    public function float($name, callable $callback = null)
122
    {
123 12
        return $this->field(Type::FLOAT, $name, $callback)->precision(8)->scale(2);
124
    }
125
126
    /**
127
     * @param string        $name
128
     * @param callable|null $callback
129
     *
130
     * @return Field
131
     */
132 12
    public function decimal($name, callable $callback = null)
133
    {
134 12
        return $this->field(Type::DECIMAL, $name, $callback)->precision(8)->scale(2);
135
    }
136
137
    /**
138
     * @param string        $name
139
     * @param callable|null $callback
140
     *
141
     * @return Field
142
     */
143 12
    public function boolean($name, callable $callback = null)
144
    {
145 12
        return $this->field(Type::BOOLEAN, $name, $callback);
146
    }
147
148
    /**
149
     * @param string        $name
150
     * @param callable|null $callback
151
     *
152
     * @return Field
153
     */
154 12
    public function setArray($name, callable $callback = null)
155
    {
156 12
        return $this->field(Type::TARRAY, $name, $callback);
157
    }
158
159
    /**
160
     * @param string        $name
161
     * @param callable|null $callback
162
     *
163
     * @return Field
164
     */
165 12
    public function simpleArray($name, callable $callback = null)
166
    {
167 12
        return $this->field(Type::SIMPLE_ARRAY, $name, $callback);
168
    }
169
170
    /**
171
     * @param string        $name
172
     * @param callable|null $callback
173
     *
174
     * @return Field
175
     */
176 12
    public function jsonArray($name, callable $callback = null)
177
    {
178 12
        return $this->field(Type::JSON_ARRAY, $name, $callback);
179
    }
180
181
    /**
182
     * @param string        $name
183
     * @param callable|null $callback
184
     *
185
     * @return Field
186
     */
187 12
    public function binary($name, callable $callback = null)
188
    {
189 12
        return $this->field(Type::BINARY, $name, $callback)->nullable();
190
    }
191
192
    /**
193
     * @return \Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder
194
     */
195
    abstract public function getBuilder();
196
197
    /**
198
     * @param Buildable     $buildable
199
     * @param callable|null $callback
200
     */
201
    abstract protected function callbackAndQueue(Buildable $buildable, callable $callback = null);
202
}
203