Passed
Pull Request — master (#808)
by Alexander
04:46 queued 02:16
created

ColumnBuilder::binary()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 5
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Yiisoft\Db\Schema\Column;
6
7
use Yiisoft\Db\Schema\SchemaInterface;
8
9
class ColumnBuilder implements ColumnBuilderInterface
10
{
11
    // Primary key column builders
12
    public static function pk(bool $autoIncrement = true): ColumnInterface
13
    {
14
        return static::integer()
15
            ->primaryKey()
16
            ->autoIncrement($autoIncrement);
17
    }
18
19
    public static function upk(bool $autoIncrement = true): ColumnInterface
20
    {
21
        return static::pk()->unsigned();
22
    }
23
24
    public static function bigpk(bool $autoIncrement = true): ColumnInterface
25
    {
26
        return static::bigint()
27
            ->primaryKey()
28
            ->autoIncrement($autoIncrement);
29
    }
30
31
    public static function ubigpk(bool $autoIncrement = true): ColumnInterface
32
    {
33
        return static::bigpk()->unsigned();
34
    }
35
36
    public static function uuidpk(bool $autoIncrement = false): ColumnInterface
37
    {
38
        return static::uuid()
39
            ->primaryKey()
40
            ->autoIncrement($autoIncrement);
41
    }
42
43
    public static function uuidpkseq(): ColumnInterface
44
    {
45
        return static::uuidpk(true);
46
    }
47
48
    // Abstract type column builders
49
    public static function uuid(): ColumnInterface
50
    {
51
        return static::columnFactory()
52
            ->fromType(SchemaInterface::TYPE_UUID);
53
    }
54
55
    public static function char(int|null $size = 1): ColumnInterface
56
    {
57
        return static::columnFactory()
58
            ->fromType(SchemaInterface::TYPE_CHAR)
59
            ->size($size);
60
    }
61
62
    public static function string(int|null $size = 255): ColumnInterface
63
    {
64
        return static::columnFactory()
65
            ->fromType(SchemaInterface::TYPE_STRING)
66
            ->size($size);
67
    }
68
69
    public static function text(): ColumnInterface
70
    {
71
        return static::columnFactory()
72
            ->fromType(SchemaInterface::TYPE_TEXT);
73
    }
74
75
    public static function binary(int|null $size = null): ColumnInterface
76
    {
77
        return static::columnFactory()
78
            ->fromType(SchemaInterface::TYPE_BINARY)
79
            ->size($size);
80
    }
81
82
    public static function boolean(): ColumnInterface
83
    {
84
        return static::columnFactory()
85
            ->fromType(SchemaInterface::TYPE_BOOLEAN);
86
    }
87
88
    public static function tinyint(int|null $size = null): ColumnInterface
89
    {
90
        return static::columnFactory()
91
            ->fromType(SchemaInterface::TYPE_TINYINT)
92
            ->size($size);
93
    }
94
95
    public static function smallint(int|null $size = null): ColumnInterface
96
    {
97
        return static::columnFactory()
98
            ->fromType(SchemaInterface::TYPE_SMALLINT)
99
            ->size($size);
100
    }
101
102
    public static function integer(int|null $size = null): ColumnInterface
103
    {
104
        return static::columnFactory()
105
            ->fromType(SchemaInterface::TYPE_INTEGER)
106
            ->size($size);
107
    }
108
109
    public static function bigint(int|null $size = null): ColumnInterface
110
    {
111
        return static::columnFactory()
112
            ->fromType(SchemaInterface::TYPE_BIGINT)
113
            ->size($size);
114
    }
115
116
    public static function float(int|null $size = null, int|null $scale = null): ColumnInterface
117
    {
118
        return static::columnFactory()
119
            ->fromType(SchemaInterface::TYPE_FLOAT)
120
            ->size($size)
121
            ->scale($scale);
122
    }
123
124
    public static function double(int|null $size = null, int|null $scale = null): ColumnInterface
125
    {
126
        return static::columnFactory()
127
            ->fromType(SchemaInterface::TYPE_DOUBLE)
128
            ->size($size)
129
            ->scale($scale);
130
    }
131
132
    public static function decimal(int|null $size = 10, int|null $scale = 0): ColumnInterface
133
    {
134
        return static::columnFactory()
135
            ->fromType(SchemaInterface::TYPE_DECIMAL)
136
            ->size($size)
137
            ->scale($scale);
138
    }
139
140
    public static function money(int|null $size = 19, int|null $scale = 4): ColumnInterface
141
    {
142
        return static::columnFactory()
143
            ->fromType(SchemaInterface::TYPE_MONEY)
144
            ->size($size)
145
            ->scale($scale);
146
    }
147
148
    public static function datetime(int|null $size = 0): ColumnInterface
149
    {
150
        return static::columnFactory()
151
            ->fromType(SchemaInterface::TYPE_DATETIME)
152
            ->size($size);
153
    }
154
155
    public static function timestamp(int|null $size = 0): ColumnInterface
156
    {
157
        return static::columnFactory()
158
            ->fromType(SchemaInterface::TYPE_TIMESTAMP)
159
            ->size($size);
160
    }
161
162
    public static function time(int|null $size = 0): ColumnInterface
163
    {
164
        return static::columnFactory()
165
            ->fromType(SchemaInterface::TYPE_TIME)
166
            ->size($size);
167
    }
168
169
    public static function date(): ColumnInterface
170
    {
171
        return static::columnFactory()
172
            ->fromType(SchemaInterface::TYPE_DATE);
173
    }
174
175
    public static function json(): ColumnInterface
176
    {
177
        return static::columnFactory()
178
            ->fromType(SchemaInterface::TYPE_JSON);
179
    }
180
181
    protected static function columnFactory(): ColumnFactory
182
    {
183
        return new ColumnFactory();
184
    }
185
}
186