Completed
Push — master ( 00b18d...cd26d4 )
by BENOIT
03:31
created

functions.php ➔ when()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 4
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace BenTools\Where;
4
5
use BenTools\Where\DeleteQuery\DeleteQueryBuilder;
6
use BenTools\Where\Expression\Condition;
7
use BenTools\Where\Expression\Expression;
8
use BenTools\Where\Expression\GroupExpression;
9
use BenTools\Where\Expression\NegatedExpression;
10
use BenTools\Where\Helper\CaseHelper;
11
use BenTools\Where\Helper\FieldHelper;
12
use BenTools\Where\InsertQuery\InsertQueryBuilder;
13
use BenTools\Where\SelectQuery\SelectQueryBuilder;
14
use BenTools\Where\UpdateQuery\UpdateQueryBuilder;
15
16
/**
17
 * @param string|Expression $expression
18
 * @param array ...$values
19
 * @return Expression|Condition
20
 * @throws \InvalidArgumentException
21
 */
22
function where($expression, ...$values): Expression
23
{
24
    return Expression::where($expression, ...$values);
25
}
26
27
/**
28
 * @param string|Expression $expression
29
 * @param array ...$values
30
 * @return GroupExpression
31
 * @throws \InvalidArgumentException
32
 */
33
function group($expression, ...$values): GroupExpression
34
{
35
    return Expression::group($expression, ...$values);
36
}
37
38
/**
39
 * @param string|Expression $expression
40
 * @param array ...$values
41
 * @return NegatedExpression
42
 * @throws \InvalidArgumentException
43
 */
44
function not($expression, ...$values): NegatedExpression
45
{
46
    return Expression::not($expression, ...$values);
47
}
48
49
function valuesOf(Expression ...$expressions): array
50
{
51
    return Expression::valuesOf(...$expressions);
52
}
53
54
/**
55
 * @param Expression[]|string[] ...$columns
56
 * @return SelectQueryBuilder
57
 */
58
function select(...$columns): SelectQueryBuilder
59
{
60
    return SelectQueryBuilder::make(...$columns);
61
}
62
63
/**
64
 * @param Expression[]|string[] ...$tables
65
 * @return SelectQueryBuilder
66
 */
67
function delete(...$tables): DeleteQueryBuilder
68
{
69
    return DeleteQueryBuilder::make(...$tables);
70
}
71
72
/**
73
 * @param array[] ...$values
74
 * @return InsertQueryBuilder
75
 * @throws \InvalidArgumentException
76
 */
77
function insert(array ...$values): InsertQueryBuilder
78
{
79
    return InsertQueryBuilder::load(...$values);
80
}
81
82
/**
83
 * @param string $table
84
 * @return UpdateQueryBuilder
85
 */
86
function update(string $table): UpdateQueryBuilder
87
{
88
    return UpdateQueryBuilder::make($table);
89
}
90
91
/**
92
 * @param array  $values
93
 * @param string $placeholder
94
 * @param string $glue
95
 * @return string
96
 */
97
function placeholders(array $values, string $placeholder = '?', string $glue = ', '): string
98
{
99
    return implode($glue, array_fill(0, count($values), $placeholder));
100
}
101
102
/**
103
 * @param string $field
104
 * @return FieldHelper
105
 */
106
function field(string $field): FieldHelper
107
{
108
    return new FieldHelper($field);
109
}
110
111
/**
112
 * @param null  $expression
113
 * @param array ...$values
114
 * @return CaseHelper
115
 * @throws \InvalidArgumentException
116
 */
117
function conditionnal($expression = null, ...$values): CaseHelper
118
{
119
    return CaseHelper::create($expression, ...$values);
120
}
121
122
/**
123
 * @param null  $expression
124
 * @param array ...$values
125
 * @return CaseHelper
126
 */
127
function when($expression = null, ...$values): CaseHelper
128
{
129
    return CaseHelper::create()->when($expression, ...$values);
130
}
131