Passed
Push — master ( 89b134...c252a6 )
by Jonas
10:11
created

SQLiteGrammar::compileUnion()   B

Complexity

Conditions 8
Paths 3

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 8

Importance

Changes 0
Metric Value
cc 8
eloc 7
c 0
b 0
f 0
nc 3
nop 1
dl 0
loc 13
ccs 8
cts 8
cp 1
crap 8
rs 8.4444
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
        if (($backtrace[6]['class'] === CteBuilder::class && $backtrace[6]['function'] === 'withExpression')
27 10
            || ($backtrace[7]['class'] === CteBuilder::class && $backtrace[7]['function'] === 'withExpression')
28 10
            || ($backtrace[8]['class'] === CteBuilder::class && $backtrace[8]['function'] === 'withExpression')) {
29 5
            $conjunction = $union['all'] ? ' union all ' : ' union ';
30
31 5
            return $conjunction.$union['query']->toSql();
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