LookupCollection::process()   B
last analyzed

Complexity

Conditions 10
Paths 10

Size

Total Lines 32
Code Lines 20

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 10
eloc 20
nc 10
nop 4
dl 0
loc 32
rs 7.6666
c 0
b 0
f 0

How to fix   Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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
}