Completed
Push — master ( 445d82...c001b3 )
by Iqbal
02:44
created

PostgresParser   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 9
c 1
b 0
f 1
lcom 1
cbo 1
dl 0
loc 51
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A comparison() 0 9 1
A transformComparison() 0 11 3
B transformField() 0 12 5
1
<?php
2
3
namespace Borobudur\Cqrs\ReadModel\Storage\Pdo\Parser;
4
5
/**
6
 * @author      Iqbal Maulana <[email protected]>
7
 * @created     4/18/16
8
 */
9
class PostgresParser extends DefaultParser
10
{
11
    /**
12
     * {@inheritdoc}
13
     */
14
    public function comparison($field, $comparison, $value)
15
    {
16
        return sprintf(
17
            '%s %s %s',
18
            $this->transformField($comparison, $this->quote.$field.$this->quote),
19
            $this->transformComparison($comparison),
20
            $this->normalizeValue($value)
21
        );
22
    }
23
24
    /**
25
     * @param string $comparison
26
     *
27
     * @return string
28
     */
29
    protected function transformComparison($comparison)
30
    {
31
        switch(strtoupper($comparison)) {
32
            case 'LIKE':
33
                return 'ILIKE';
34
            case 'NOT LIKE':
35
                return 'NOT ILIKE';
36
        }
37
38
        return $comparison;
39
    }
40
41
    /**
42
     * @param string $comparison
43
     * @param string $field
44
     *
45
     * @return string
46
     */
47
    protected function transformField($comparison, $field)
48
    {
49
        switch(strtoupper($comparison)) {
50
            case 'LIKE':
51
            case 'NOT LIKE':
52
            case 'ILIKE':
53
            case 'NOT ILIKE':
54
                return sprintf('cast(%s as varchar)', $field);
55
        }
56
57
        return $field;
58
    }
59
}
60