Passed
Push — master ( c252a6...ac57d2 )
by Jonas
02:40
created

SQLiteGrammar   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 74
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 74
ccs 19
cts 19
cp 1
rs 10
wmc 14

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getBindingsForUpdate() 0 7 3
A compileUpdate() 0 7 3
A compileDelete() 0 7 3
A compileUnion() 0 13 5
1
<?php
2
3
namespace Staudenmeir\LaravelCte\Query\Grammars;
4
5
use Illuminate\Database\Query\Builder;
6
use Illuminate\Database\Query\Grammars\SQLiteGrammar as Base;
7
use Staudenmeir\LaravelCte\Query\Builder as CteBuilder;
8
9
class SQLiteGrammar extends Base
10
{
11
    use CompilesExpressions {
0 ignored issues
show
introduced by
The trait Staudenmeir\LaravelCte\Q...ars\CompilesExpressions requires some properties which are not provided by Staudenmeir\LaravelCte\Q...\Grammars\SQLiteGrammar: $unionExpressions, $expressions, $recursionLimit, $unionRecursionLimit
Loading history...
12
        compileUpdate as compileUpdateTrait;
13
        compileDelete as compileDeleteTrait;
14
    }
15
16
    /**
17
     * Compile a single union statement.
18
     *
19
     * @param array $union
20
     * @return string
21
     */
22 10
    protected function compileUnion(array $union)
23
    {
24 10
        $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 9);
25
26 10
        for ($i = 6; $i <= 8; $i++) {
27 10
            if (($backtrace[$i]['class'] === CteBuilder::class && $backtrace[$i]['function'] === 'withExpression')) {
28 5
                $conjunction = $union['all'] ? ' union all ' : ' union ';
29
30 5
                return $conjunction.$union['query']->toSql();
31
            }
32
        }
33
34 5
        return parent::compileUnion($union);
35
    }
36
37
    /**
38
     * Compile an update statement into SQL.
39
     *
40
     * @param \Illuminate\Database\Query\Builder $query
41
     * @param array $values
42
     * @return string
43
     */
44 3
    public function compileUpdate(Builder $query, array $values)
45
    {
46 3
        if (isset($query->joins) || isset($query->limit)) {
47 2
            return parent::compileUpdate($query, $values);
48
        }
49
50 1
        return $this->compileUpdateTrait($query, $values);
51
    }
52
53
    /**
54
     * Get the bindings for an update statement.
55
     *
56
     * @param \Illuminate\Database\Query\Builder $query
57
     * @param array $bindings
58
     * @param array $values
59
     * @return array
60
     */
61 3
    public function getBindingsForUpdate(Builder $query, array $bindings, array $values)
62
    {
63 3
        if (isset($query->joins) || isset($query->limit)) {
64 2
            return parent::prepareBindingsForUpdate($bindings, $values);
65
        }
66
67 1
        return $this->prepareBindingsForUpdate($bindings, $values);
68
    }
69
70
    /**
71
     * Compile a delete statement into SQL.
72
     *
73
     * @param \Illuminate\Database\Query\Builder $query
74
     * @return string
75
     */
76 3
    public function compileDelete(Builder $query)
77
    {
78 3
        if (isset($query->joins) || isset($query->limit)) {
79 2
            return parent::compileDelete($query);
80
        }
81
82 1
        return $this->compileDeleteTrait($query);
83
    }
84
}
85