LookupCollection   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 27
dl 0
loc 55
rs 10
c 0
b 0
f 0
wmc 12

2 Methods

Rating   Name   Duplication   Size   Complexity  
B process() 0 32 10
A has() 0 12 2
1
<?php
2
3
namespace Tsukasa\QueryBuilder\Database\Mysql;
4
5
use Tsukasa\QueryBuilder\BaseLookupCollection;
6
use Tsukasa\QueryBuilder\Interfaces\IAdapter;
7
8
class LookupCollection extends BaseLookupCollection
9
{
10
    public function has($lookup)
11
    {
12
        $lookups = [
13
            'regex', 'iregex', 'second', 'year', 'minute',
14
            'hour', 'day', 'month', 'week_day'
15
        ];
16
17
        if (in_array(strtolower($lookup), $lookups, true)) {
18
            return true;
19
        }
20
21
        return parent::has($lookup);
22
    }
23
24
    /**
25
     * @param IAdapter $adapter
26
     * @param $lookup
27
     * @param $column
28
     * @param $value
29
     * @return string
30
     */
31
    public function process(IAdapter $adapter, $lookup, $column, $value)
32
    {
33
        switch ($lookup) {
34
            case 'regex':
35
                return 'BINARY ' . $adapter->quoteColumn($column) . ' REGEXP ' . $adapter->quoteValue($value);
36
37
            case 'iregex':
38
                return $adapter->quoteColumn($column) . ' REGEXP ' . $adapter->quoteValue($value);
39
40
            case 'second':
41
                return 'EXTRACT(SECOND FROM ' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
42
43
            case 'year':
44
                return 'EXTRACT(YEAR FROM ' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
45
46
            case 'minute':
47
                return 'EXTRACT(MINUTE FROM ' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
48
49
            case 'hour':
50
                return 'EXTRACT(HOUR FROM ' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
51
52
            case 'day':
53
                return 'EXTRACT(DAY FROM ' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
54
55
            case 'month':
56
                return 'EXTRACT(MONTH FROM ' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
57
58
            case 'week_day':
59
                return 'DAYOFWEEK(' . $adapter->quoteColumn($column) . ')=' . $adapter->quoteValue((string)$value);
60
        }
61
62
        return parent::process($adapter, $lookup, $column, $value);
63
    }
64
}