Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
87.50% |
14 / 16 |
|
88.89% |
8 / 9 |
CRAP | |
0.00% |
0 / 1 |
Builder | |
87.50% |
14 / 16 |
|
88.89% |
8 / 9 |
10.20 | |
0.00% |
0 / 1 |
__call | |
100.00% |
4 / 4 |
|
100.00% |
1 / 1 |
2 | |||
scope | |
0.00% |
0 / 2 |
|
0.00% |
0 / 1 |
2 | |||
orderByScore | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
only | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
mode | |
100.00% |
2 / 2 |
|
100.00% |
1 / 1 |
1 | |||
inNaturalLanguageMode | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
withQueryExpansion | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
inBooleanMode | |
100.00% |
1 / 1 |
|
100.00% |
1 / 1 |
1 | |||
count | |
100.00% |
3 / 3 |
|
100.00% |
1 / 1 |
1 |
1 | <?php |
2 | |
3 | namespace Baril\Sqlout; |
4 | |
5 | use Closure; |
6 | use Laravel\Scout\Builder as ScoutBuilder; |
7 | |
8 | class Builder extends ScoutBuilder |
9 | { |
10 | public const NATURAL_LANGUAGE = 'in natural language mode'; |
11 | public const QUERY_EXPANSION = 'in natural language mode with query expansion'; |
12 | public const BOOLEAN = 'in boolean mode'; |
13 | |
14 | /** |
15 | * The search mode (one of the consts above). |
16 | * |
17 | * @var string |
18 | */ |
19 | public $mode; |
20 | |
21 | /** |
22 | * The array of scopes that will be applied to the model query. |
23 | * |
24 | * @var array |
25 | */ |
26 | public $scopes = []; |
27 | |
28 | public function __call($method, $parameters) |
29 | { |
30 | if (static::hasMacro($method)) { |
31 | return parent::__call($method, $parameters); |
32 | } |
33 | |
34 | $this->scopes[] = [$method, $parameters]; |
35 | return $this; |
36 | } |
37 | |
38 | /** |
39 | * @deprecated Will be removed in next major version, use Scout's $builder->query($callback) instead. |
40 | */ |
41 | public function scope(Closure $callback) |
42 | { |
43 | $this->scopes[] = $callback; |
44 | return $this; |
45 | } |
46 | |
47 | /** |
48 | * Order the query by score. |
49 | * |
50 | * @param string $direction |
51 | * @return $this |
52 | */ |
53 | public function orderByScore($direction = 'desc') |
54 | { |
55 | return $this->orderBy('_score', $direction); |
56 | } |
57 | |
58 | /** |
59 | * Restrict the search to the provided field(s). |
60 | * |
61 | * @param string|array|\Illuminate\Contracts\Support\Arrayable $fields |
62 | * @return $this |
63 | */ |
64 | public function only($fields) |
65 | { |
66 | return parent::where('field', $fields); |
67 | } |
68 | |
69 | /** |
70 | * Switches to the provided mode. |
71 | * |
72 | * @param string $mode |
73 | * @return $this |
74 | */ |
75 | public function mode($mode) |
76 | { |
77 | $this->mode = trim(strtolower($mode)); |
78 | return $this; |
79 | } |
80 | |
81 | /** |
82 | * Switches to natural language mode. |
83 | * |
84 | * @param string $mode |
85 | * @return $this |
86 | */ |
87 | public function inNaturalLanguageMode() |
88 | { |
89 | return $this->mode(static::NATURAL_LANGUAGE); |
90 | } |
91 | |
92 | /** |
93 | * Switches to natural language mode with query expansion. |
94 | * |
95 | * @param string $mode |
96 | * @return $this |
97 | */ |
98 | public function withQueryExpansion() |
99 | { |
100 | return $this->mode(static::QUERY_EXPANSION); |
101 | } |
102 | |
103 | /** |
104 | * Switches to boolean mode. |
105 | * |
106 | * @param string $mode |
107 | * @return $this |
108 | */ |
109 | public function inBooleanMode() |
110 | { |
111 | return $this->mode(static::BOOLEAN); |
112 | } |
113 | |
114 | /** |
115 | * Returns the total number of hits |
116 | * |
117 | * @return int |
118 | */ |
119 | public function count() |
120 | { |
121 | return $this->engine()->getTotalCount( |
122 | $this->engine()->search($this) |
123 | ); |
124 | } |
125 | } |