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

SortClause::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 3
Bugs 0 Features 0
Metric Value
cc 1
eloc 2
c 3
b 0
f 0
nc 1
nop 1
dl 0
loc 5
ccs 3
cts 3
cp 1
crap 1
rs 10
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