Completed
Push — master ( 927475...c842a5 )
by Patrick
05:35
created

Fields::getBuilder()

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
c 1
b 1
f 0
dl 0
loc 1
ccs 0
cts 0
cp 0
nc 1
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 22
    public function field($type, $name, callable $callback = null)
19
    {
20 22
        $field = Field::make($this->getBuilder(), $type, $name);
21
22 22
        $this->callbackAndQueue($field, $callback);
23
24 22
        return $field;
25
    }
26
27
    /**
28
     * @param string        $name
29
     * @param callable|null $callback
30
     *
31
     * @return Field
32
     */
33 15
    public function string($name, callable $callback = null)
34
    {
35 15
        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 3
    public function text($name, callable $callback = null)
45
    {
46 3
        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 8
    public function integer($name, callable $callback = null)
56
    {
57 8
        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 5
    public function smallInteger($name, callable $callback = null)
67
    {
68 5
        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 5
    public function bigInteger($name, callable $callback = null)
78
    {
79 5
        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 3
    public function guid($name, callable $callback = null)
89
    {
90 3
        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 3
    public function blob($name, callable $callback = null)
100
    {
101 3
        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 3
    public function object($name, callable $callback = null)
111
    {
112 3
        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 3
    public function float($name, callable $callback = null)
122
    {
123 3
        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 3
    public function decimal($name, callable $callback = null)
133
    {
134 3
        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 3
    public function boolean($name, callable $callback = null)
144
    {
145 3
        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 3
    public function simpleArray($name, callable $callback = null)
155
    {
156 3
        return $this->field(Type::SIMPLE_ARRAY, $name, $callback);
157
    }
158
159
    /**
160
     * @param string        $name
161
     * @param callable|null $callback
162
     *
163
     * @return Field
164
     */
165 3
    public function jsonArray($name, callable $callback = null)
166
    {
167 3
        return $this->field(Type::JSON_ARRAY, $name, $callback);
168
    }
169
170
    /**
171
     * @param string        $name
172
     * @param callable|null $callback
173
     *
174
     * @return Field
175
     */
176 3
    public function binary($name, callable $callback = null)
177
    {
178 3
        return $this->field(Type::BINARY, $name, $callback)->nullable();
179
    }
180
181
    /**
182
     * @return \Doctrine\ORM\Mapping\Builder\ClassMetadataBuilder
183
     */
184
    abstract public function getBuilder();
185
186
    /**
187
     * @param Buildable     $buildable
188
     * @param callable|null $callback
189
     */
190
    abstract protected function callbackAndQueue(Buildable $buildable, callable $callback = null);
191
}
192