AggregateClause   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 26
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

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

2 Methods

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