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

PruneClause   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 11
dl 0
loc 33
ccs 11
cts 11
cp 1
rs 10
c 3
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A compile() 0 14 2
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