NormalizesArangoSearchFunctions   A
last analyzed

Complexity

Total Complexity 29

Size/Duplication

Total Lines 204
Duplicated Lines 0 %

Test Coverage

Coverage 98.28%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 111
c 1
b 0
f 0
dl 0
loc 204
ccs 114
cts 116
cp 0.9828
rs 10
wmc 29

10 Methods

Rating   Name   Duplication   Size   Complexity  
A normalizeBoost() 0 13 3
A normalizeInRange() 0 28 5
A normalizeTfidf() 0 10 2
A normalizeLike() 0 9 1
A normalizeExists() 0 10 2
A normalizeBm25() 0 16 3
A normalizeAnalyzer() 0 12 3
A normalizeNgramMatch() 0 22 3
A normalizeLevenshteinMatch() 0 31 4
A normalizePhrase() 0 15 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace LaravelFreelancerNL\FluentAQL\Traits;
6
7
use LaravelFreelancerNL\FluentAQL\Expressions\PredicateExpression;
8
use LaravelFreelancerNL\FluentAQL\QueryBuilder;
9
10
/**
11
 * Trait hasFunctions.
12
 *
13
 * AQL Function API calls.
14
 */
15
trait NormalizesArangoSearchFunctions
16
{
17 8
    protected function normalizeAnalyzer(QueryBuilder $queryBuilder): void
18
    {
19
        if (
20 8
            ! is_array($this->parameters['predicates'])
21 8
            && ! $this->parameters['predicates'] instanceof PredicateExpression
22
        ) {
23
            $this->parameters['predicates'] = [$this->parameters['predicates']];
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
24
        }
25 8
        $this->parameters['predicates'] = $queryBuilder->normalizePredicates($this->parameters['predicates']);
26 8
        $this->parameters['analyzer'] = $queryBuilder->normalizeArgument(
27 8
            $this->parameters['analyzer'],
28 8
            ['Reference', 'Query', 'Bind']
29
        );
30
    }
31
32
    /**
33
     * @psalm-suppress MixedArgument
34
     */
35 2
    protected function normalizeBoost(QueryBuilder $queryBuilder): void
36
    {
37
        if (
38 2
            ! is_array($this->parameters['predicates'])
39 2
            && ! $this->parameters['predicates'] instanceof PredicateExpression
40
        ) {
41
            $this->parameters['predicates'] = [$this->parameters['predicates']];
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
42
        }
43 2
        $this->parameters['predicates'] = $queryBuilder->normalizePredicates($this->parameters['predicates']);
44
45 2
        $this->parameters['boost'] = $queryBuilder->normalizeArgument(
46 2
            $this->parameters['boost'],
47 2
            ['Number', 'Reference', 'Query', 'Bind']
48
        );
49
    }
50
51 3
    protected function normalizeBm25(QueryBuilder $queryBuilder): void
52
    {
53 3
        $this->parameters[0] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
54 3
            $this->parameters[0],
55 3
            ['Query', 'Reference']
56
        );
57 3
        if (isset($this->parameters[1])) {
58 2
            $this->parameters[1] = $queryBuilder->normalizeArgument(
59 2
                $this->parameters[1],
60 2
                ['Number', 'Query', 'Reference', 'Bind']
61
            );
62
        }
63 3
        if (isset($this->parameters[2])) {
64 1
            $this->parameters[2] = $queryBuilder->normalizeArgument(
65 1
                $this->parameters[2],
66 1
                ['Number', 'Query', 'Reference', 'Bind']
67
            );
68
        }
69
    }
70
71 2
    protected function normalizeTfidf(QueryBuilder $queryBuilder): void
72
    {
73 2
        $this->parameters[0] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
74 2
            $this->parameters[0],
75 2
            ['Query', 'Reference']
76
        );
77 2
        if (isset($this->parameters[1])) {
78 1
            $this->parameters[1] = $queryBuilder->normalizeArgument(
79 1
                $this->parameters[1],
80 1
                ['Boolean', 'Query', 'Reference', 'Bind']
81
            );
82
        }
83
    }
84
85 2
    protected function normalizeExists(QueryBuilder $queryBuilder): void
86
    {
87 2
        $this->parameters[0] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
88 2
            $this->parameters[0],
89 2
            ['Query', 'Reference']
90
        );
91 2
        if (isset($this->parameters[1])) {
92 1
            $this->parameters[1] = $queryBuilder->normalizeArgument(
93 1
                $this->parameters[1],
94 1
                ['Query', 'Reference', 'Bind']
95
            );
96
        }
97
    }
98
99 2
    protected function normalizeInRange(QueryBuilder $queryBuilder): void
100
    {
101 2
        $this->parameters['path'] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
102 2
            $this->parameters['path'],
103 2
            ['Query', 'Reference']
104
        );
105 2
        if (isset($this->parameters['low'])) {
106 2
            $this->parameters['low'] = $queryBuilder->normalizeArgument(
107 2
                $this->parameters['low'],
108 2
                ['Number', 'Boolean', 'Null', 'Query', 'Reference', 'Bind']
109
            );
110
        }
111 2
        if (isset($this->parameters['high'])) {
112 2
            $this->parameters['high'] = $queryBuilder->normalizeArgument(
113 2
                $this->parameters['high'],
114 2
                ['Number', 'Boolean', 'Null', 'Query', 'Reference', 'Bind']
115
            );
116
        }
117 2
        if (isset($this->parameters['includeLow'])) {
118 1
            $this->parameters['includeLow'] = $queryBuilder->normalizeArgument(
119 1
                $this->parameters['includeLow'],
120 1
                ['Boolean', 'Query', 'Reference', 'Bind']
121
            );
122
        }
123 2
        if (isset($this->parameters['includeHigh'])) {
124 1
            $this->parameters['includeHigh'] = $queryBuilder->normalizeArgument(
125 1
                $this->parameters['includeHigh'],
126 1
                ['Boolean', 'Query', 'Reference', 'Bind']
127
            );
128
        }
129
    }
130
131 2
    protected function normalizeLevenshteinMatch(QueryBuilder $queryBuilder): void
132
    {
133 2
        $this->parameters['path'] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
134 2
            $this->parameters['path'],
135 2
            ['Query', 'Reference']
136
        );
137 2
        $this->parameters['target'] = $queryBuilder->normalizeArgument(
138 2
            $this->parameters['target'],
139 2
            ['Query', 'Reference', 'Bind']
140
        );
141 2
        $this->parameters['distance'] = $queryBuilder->normalizeArgument(
142 2
            $this->parameters['distance'],
143 2
            ['Number', 'Reference', 'Bind']
144
        );
145
146 2
        if (isset($this->parameters['transpositions'])) {
147 1
            $this->parameters['transpositions'] = $queryBuilder->normalizeArgument(
148 1
                $this->parameters['transpositions'],
149 1
                ['Boolean', 'Query', 'Reference', 'Bind']
150
            );
151
        }
152 2
        if (isset($this->parameters['maxTerms'])) {
153 1
            $this->parameters['maxTerms'] = $queryBuilder->normalizeArgument(
154 1
                $this->parameters['maxTerms'],
155 1
                ['Number', 'Query', 'Reference', 'Bind']
156
            );
157
        }
158 2
        if (isset($this->parameters['prefix'])) {
159 1
            $this->parameters['prefix'] = $queryBuilder->normalizeArgument(
160 1
                $this->parameters['prefix'],
161 1
                ['Query', 'Reference', 'Bind']
162
            );
163
        }
164
    }
165
166 1
    protected function normalizeLike(QueryBuilder $queryBuilder): void
167
    {
168 1
        $this->parameters['path'] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
169 1
            $this->parameters['path'],
170 1
            ['Reference', 'Query']
171
        );
172 1
        $this->parameters['search'] = $queryBuilder->normalizeArgument(
173 1
            $this->parameters['search'],
174 1
            ['Reference', 'Query', 'Bind']
175
        );
176
    }
177
178 2
    protected function normalizeNgramMatch(QueryBuilder $queryBuilder): void
179
    {
180 2
        $this->parameters['path'] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
181 2
            $this->parameters['path'],
182 2
            ['Query', 'Reference']
183
        );
184 2
        $this->parameters['target'] = $queryBuilder->normalizeArgument(
185 2
            $this->parameters['target'],
186 2
            ['Query', 'Reference', 'Bind']
187
        );
188
189 2
        if (isset($this->parameters['threshold'])) {
190 1
            $this->parameters['threshold'] = $queryBuilder->normalizeArgument(
191 1
                $this->parameters['threshold'],
192 1
                ['Number', 'Reference', 'Bind']
193
            );
194
        }
195
196 2
        if (isset($this->parameters['analyzer'])) {
197 1
            $this->parameters['analyzer'] = $queryBuilder->normalizeArgument(
198 1
                $this->parameters['analyzer'],
199 1
                ['Query', 'Reference', 'Bind']
200
            );
201
        }
202
    }
203
204 3
    protected function normalizePhrase(QueryBuilder $queryBuilder): void
205
    {
206
        /** @var mixed $parameter */
207 3
        foreach ($this->parameters as $key => $parameter) {
208 3
            if ($key === 0) {
209 3
                $this->parameters[$key] = $queryBuilder->normalizeArgument(
0 ignored issues
show
Bug Best Practice introduced by
The property parameters does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
210
                    $parameter,
211 3
                    ['Reference', 'Query', 'Bind']
212
                );
213
214 3
                continue;
215
            }
216 3
            $this->parameters[$key] = $queryBuilder->normalizeArgument(
217
                $parameter,
218 3
                ['Number', 'Reference', 'Query', 'Bind']
219
            );
220
        }
221
    }
222
}
223