Failed Conditions
Branch prepare-alpha (4a2a7f)
by Bas
02:41
created

SortClause   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 5 1
A compile() 0 24 6
1
<?php
2
3
namespace LaravelFreelancerNL\FluentAQL\Clauses;
4
5
use LaravelFreelancerNL\FluentAQL\Expressions\ExpressionInterface;
6
use LaravelFreelancerNL\FluentAQL\QueryBuilder;
7
8
class SortClause extends Clause
9
{
10
    /**
11
     * @var array $references
12
     */
13
    protected $references;
14
15 1
    public function __construct($references)
16
    {
17 1
        parent::__construct();
18
19 1
        $this->references = $references;
20 1
    }
21
22 1
    public function compile(QueryBuilder $queryBuilder): string
23
    {
24 1
        if (empty($this->references[0])) {
25 1
            return 'SORT null';
26
        }
27
28
        $this->references = array_map(function ($reference) use ($queryBuilder) {
29 1
            if (!$queryBuilder->grammar->isSortDirection($reference)) {
30 1
                return $queryBuilder->normalizeArgument($reference, ['Reference', 'Null', 'Query', 'Bind']);
31
            }
32 1
            return $reference;
33 1
        }, $this->references);
34
35 1
        $output = '';
36 1
        foreach ($this->references as $value) {
37 1
            if ($value instanceof ExpressionInterface) {
38 1
                $output .= ', ' . $value->compile($queryBuilder);
39
            }
40 1
            if (is_string($value)) {
41 1
                $output .= ' ' . $value;
42
            }
43
        }
44
45 1
        return 'SORT ' . ltrim($output, ', ');
46
    }
47
}
48