AggregateClause::compile()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 1

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 7
c 3
b 0
f 0
nc 1
nop 1
dl 0
loc 12
ccs 8
cts 8
cp 1
crap 1
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LaravelFreelancerNL\FluentAQL\Clauses;
6
7
use LaravelFreelancerNL\FluentAQL\Expressions\Expression;
8
use LaravelFreelancerNL\FluentAQL\QueryBuilder;
9
10
class AggregateClause extends Clause
11
{
12
    protected string|QueryBuilder|Expression $variableName;
13
    protected string|QueryBuilder|Expression $aggregateExpression;
14
15 1
    public function __construct(
16
        string|QueryBuilder|Expression $variableName,
17
        string|QueryBuilder|Expression $aggregateExpression
18
    ) {
19 1
        $this->variableName = $variableName;
20
21 1
        $this->aggregateExpression = $aggregateExpression;
22
    }
23
24 1
    public function compile(QueryBuilder $queryBuilder): string
25
    {
26 1
        $this->variableName = $queryBuilder->normalizeArgument($this->variableName, 'Variable');
27 1
        $queryBuilder->registerVariable($this->variableName);
28
29 1
        $this->aggregateExpression = $queryBuilder->normalizeArgument(
30 1
            $this->aggregateExpression,
31 1
            ['Reference', 'Function', 'Query', 'Bind']
32
        );
33
34 1
        return "AGGREGATE {$this->variableName->compile($queryBuilder)} " .
35 1
            "= {$this->aggregateExpression->compile($queryBuilder)}";
36
    }
37
}
38