Passed
Push — next ( 90a142...051b6e )
by Bas
02:18
created

PruneClause::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 2
dl 0
loc 7
ccs 3
cts 3
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LaravelFreelancerNL\FluentAQL\Clauses;
6
7
use LaravelFreelancerNL\FluentAQL\Expressions\PredicateExpression;
8
use LaravelFreelancerNL\FluentAQL\QueryBuilder;
9
10
class PruneClause extends FilterClause
11
{
12
    protected ?string $pruneVariable = null;
13
14
    /**
15
     * Filter statement.
16
     *
17
     * @param array<mixed> $predicates
18
     */
19 3
    public function __construct(
20
        array|PredicateExpression $predicates,
21
        string $pruneVariable = null
22
    ) {
23 3
        parent::__construct($predicates);
24
25 3
        $this->pruneVariable = $pruneVariable;
26
    }
27
28
29 3
    public function compile(QueryBuilder $queryBuilder): string
30
    {
31 3
        $aql = 'PRUNE ';
32
33 3
        if (isset($this->pruneVariable)) {
34 1
            $pruneVariable = $queryBuilder->normalizeArgument($this->pruneVariable, 'Variable');
35 1
            $aql .= $pruneVariable->compile($queryBuilder) . ' = ';
36
        }
37
38 3
        $this->predicates = $queryBuilder->normalizePredicates($this->predicates);
39
40 3
        $compiledPredicates = $queryBuilder->compilePredicates($this->predicates);
41
42 3
        return  $aql . rtrim($compiledPredicates);
43
    }
44
}
45