Skip to content
This repository was archived by the owner on May 13, 2021. It is now read-only.

Commit b1bf509

Browse files
authored
Merge pull request #6 from lkmadushan/support-72
Supports PHP 7.2 and added missing doc comments
2 parents cd92536 + 23ac561 commit b1bf509

File tree

8 files changed

+88
-34
lines changed

8 files changed

+88
-34
lines changed

composer.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
}
1212
],
1313
"require": {
14-
"php": "^7.4",
14+
"php": "^7.2.5",
1515
"laravel/scout": "^8.0",
1616
"meilisearch/meilisearch-php": "^0.9.0"
1717
},

config/config.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22

33
return [
44
'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'),
5-
'key' => env('MEILISEARCH_KEY', null)
5+
'key' => env('MEILISEARCH_KEY', null),
66
];

src/Console/IndexMeilisearch.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,37 @@
22

33
namespace Meilisearch\Scout\Console;
44

5-
use Illuminate\Console\Command;
65
use MeiliSearch\Client;
6+
use Illuminate\Console\Command;
77
use MeiliSearch\Exceptions\HTTPRequestException;
8-
use Meilisearch\Engines\MeilisearchEngine;
98

109
class IndexMeilisearch extends Command
1110
{
11+
/**
12+
* The name and signature of the console command.
13+
*
14+
* @var string
15+
*/
1216
protected $signature = 'scout:index {--d|delete : Delete an existing index} {--k|key : The name of primary key} {name : The name of the index}';
1317

18+
/**
19+
* The console command description.
20+
*
21+
* @var string
22+
*/
1423
protected $description = 'Create or delete an index';
1524

25+
/**
26+
* Execute the console command.
27+
*
28+
* @param \Illuminate\Contracts\Events\Dispatcher $events
29+
*
30+
* @return void
31+
*/
1632
public function handle()
1733
{
1834
$client = new Client(config('meilisearch.host'), config('meilisearch.key'));
35+
1936
try {
2037
if ($this->option('delete')) {
2138
$client->deleteIndex($this->argument('name'));
@@ -28,7 +45,7 @@ public function handle()
2845
if ($this->option('key')) {
2946
$index = [
3047
'uid' => $this->argument('name'),
31-
'primaryKey' => $this->option('key')
48+
'primaryKey' => $this->option('key'),
3249
];
3350
}
3451
$client->createIndex($index);

src/Engines/MeilisearchEngine.php

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,25 @@
22

33
namespace Meilisearch\Scout\Engines;
44

5+
use Laravel\Scout\Builder;
56
use Laravel\Scout\Engines\Engine;
67
use MeiliSearch\Client as Meilisearch;
78

89
class MeilisearchEngine extends Engine
910
{
10-
protected Meilisearch $meilisearch;
11-
protected bool $softDelete;
11+
/**
12+
* The Meilisearch client.
13+
*
14+
* @var Meilisearch
15+
*/
16+
protected $meilisearch;
17+
18+
/**
19+
* Determines if soft deletes for Scout are enabled or not.
20+
*
21+
* @var bool
22+
*/
23+
protected $softDelete;
1224

1325
public function __construct(Meilisearch $meilisearch, bool $softDelete = false)
1426
{
@@ -20,6 +32,7 @@ public function __construct(Meilisearch $meilisearch, bool $softDelete = false)
2032
* Update the given model in the index.
2133
*
2234
* @param \Illuminate\Database\Eloquent\Collection $models
35+
*
2336
* @return void
2437
*/
2538
public function update($models)
@@ -42,7 +55,7 @@ public function update($models)
4255
return array_merge($searchableData, $model->scoutMetadata());
4356
})->filter()->values()->all();
4457

45-
if (!empty($objects)) {
58+
if (! empty($objects)) {
4659
$index->addDocuments($objects, $models->first()->getKeyName());
4760
}
4861
}
@@ -51,14 +64,15 @@ public function update($models)
5164
* Remove the given model from the index.
5265
*
5366
* @param \Illuminate\Database\Eloquent\Collection $models
67+
*
5468
* @return void
5569
*/
5670
public function delete($models)
5771
{
5872
$index = $this->meilisearch->getIndex($models->first()->searchableAs());
5973

6074
$index->deleteDocuments(
61-
$models->map(fn($model) => $model->getScoutKey())
75+
$models->map->getScoutKey()
6276
->values()
6377
->all()
6478
);
@@ -67,25 +81,27 @@ public function delete($models)
6781
/**
6882
* Perform the given search on the engine.
6983
*
70-
* @param \Laravel\Scout\Builder $builder
84+
* @param Builder $builder
85+
*
7186
* @return mixed
7287
*/
73-
public function search(\Laravel\Scout\Builder $builder)
88+
public function search(Builder $builder)
7489
{
7590
return $this->performSearch($builder, array_filter([
76-
'limit' => $builder->limit
91+
'limit' => $builder->limit,
7792
]));
7893
}
7994

8095
/**
8196
* Perform the given search on the engine.
8297
*
83-
* @param \Laravel\Scout\Builder $builder
98+
* @param Builder $builder
8499
* @param int $perPage
85100
* @param int $page
101+
*
86102
* @return mixed
87103
*/
88-
public function paginate(\Laravel\Scout\Builder $builder, $perPage, $page)
104+
public function paginate(Builder $builder, $perPage, $page)
89105
{
90106
return $this->performSearch($builder, array_filter([
91107
'limit' => $perPage,
@@ -95,11 +111,12 @@ public function paginate(\Laravel\Scout\Builder $builder, $perPage, $page)
95111
/**
96112
* Perform the given search on the engine.
97113
*
98-
* @param \Laravel\Scout\Builder $builder
114+
* @param Builder $builder
99115
* @param array $options
116+
*
100117
* @return mixed
101118
*/
102-
protected function performSearch(\Laravel\Scout\Builder $builder, array $options = [])
119+
protected function performSearch(Builder $builder, array $options = [])
103120
{
104121
$meilisearch = $this->meilisearch->getIndex($builder->index ?: $builder->model->searchableAs());
105122

@@ -119,6 +136,7 @@ protected function performSearch(\Laravel\Scout\Builder $builder, array $options
119136
* Pluck and return the primary keys of the given results.
120137
*
121138
* @param mixed $results
139+
*
122140
* @return \Illuminate\Support\Collection
123141
*/
124142
public function mapIds($results)
@@ -132,12 +150,13 @@ public function mapIds($results)
132150
/**
133151
* Map the given results to instances of the given model.
134152
*
135-
* @param \Laravel\Scout\Builder $builder
153+
* @param Builder $builder
136154
* @param mixed $results
137155
* @param \Illuminate\Database\Eloquent\Model $model
156+
*
138157
* @return \Illuminate\Database\Eloquent\Collection
139158
*/
140-
public function map(\Laravel\Scout\Builder $builder, $results, $model)
159+
public function map(Builder $builder, $results, $model)
141160
{
142161
if (is_null($results) || count($results['hits']) === 0) {
143162
return $model->newCollection();
@@ -159,6 +178,7 @@ public function map(\Laravel\Scout\Builder $builder, $results, $model)
159178
* Get the total count from a raw result returned by the engine.
160179
*
161180
* @param mixed $results
181+
*
162182
* @return int
163183
*/
164184
public function getTotalCount($results)
@@ -170,6 +190,7 @@ public function getTotalCount($results)
170190
* Flush all of the model's records from the engine.
171191
*
172192
* @param \Illuminate\Database\Eloquent\Model $model
193+
*
173194
* @return void
174195
*/
175196
public function flush($model)
@@ -183,6 +204,7 @@ public function flush($model)
183204
* Determine if the given model uses soft deletes.
184205
*
185206
* @param \Illuminate\Database\Eloquent\Model $model
207+
*
186208
* @return bool
187209
*/
188210
protected function usesSoftDelete($model)
@@ -195,6 +217,7 @@ protected function usesSoftDelete($model)
195217
*
196218
* @param string $method
197219
* @param array $parameters
220+
*
198221
* @return mixed
199222
*/
200223
public function __call($method, $parameters)

src/MeilisearchServiceProvider.php

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,43 @@
22

33
namespace Meilisearch\Scout;
44

5-
use Illuminate\Support\ServiceProvider;
6-
use Laravel\Scout\EngineManager;
75
use MeiliSearch\Client;
6+
use Laravel\Scout\EngineManager;
7+
use Illuminate\Support\ServiceProvider;
88
use Meilisearch\Scout\Console\IndexMeilisearch;
99
use Meilisearch\Scout\Engines\MeilisearchEngine;
1010

1111
class MeilisearchServiceProvider extends ServiceProvider
1212
{
13+
/**
14+
* Register any application services.
15+
*
16+
* @return void
17+
*/
1318
public function register()
1419
{
1520
$this->mergeConfigFrom(__DIR__.'/../config/config.php', 'meilisearch');
1621
}
1722

23+
/**
24+
* Bootstrap any application services.
25+
*
26+
* @return void
27+
*/
1828
public function boot()
1929
{
20-
if($this->app->runningInConsole()) {
30+
if ($this->app->runningInConsole()) {
2131
$this->publishes([
2232
__DIR__.'/../config/config.php' => config_path('meilisearch.php'),
2333
], 'config');
24-
}
2534

26-
$this->commands([IndexMeilisearch::class]);
35+
$this->commands([IndexMeilisearch::class]);
36+
}
2737

28-
resolve(EngineManager::class)->extend('meilisearch', fn() => new MeilisearchEngine(new Client(config('meilisearch.host'), config('meilisearch.key'))));
38+
resolve(EngineManager::class)->extend('meilisearch', function () {
39+
return new MeilisearchEngine(
40+
new Client(config('meilisearch.host'), config('meilisearch.key'))
41+
);
42+
});
2943
}
3044
}

tests/Fixtures/SearchableModel.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace Meilisearch\Scout\Tests\Fixtures;
44

5-
use Illuminate\Database\Eloquent\Model;
65
use Laravel\Scout\Searchable;
6+
use Illuminate\Database\Eloquent\Model;
77

88
class SearchableModel extends Model
99
{

tests/MeilisearchEngineTest.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
namespace Meilisearch\Scout\Tests;
44

5+
use stdClass;
6+
use Mockery as m;
57
use MeiliSearch\Client;
6-
use Illuminate\Database\Eloquent\Collection;
78
use Laravel\Scout\Builder;
9+
use Illuminate\Database\Eloquent\Collection;
810
use Meilisearch\Scout\Engines\MeilisearchEngine;
911
use Meilisearch\Scout\Tests\Fixtures\SearchableModel;
10-
use Mockery as m;
11-
use stdClass;
1212

1313
class MeilisearchEngineTest extends TestCase
1414
{
@@ -24,8 +24,8 @@ public function update_adds_objects_to_index()
2424
$client->shouldReceive('getIndex')->with('table')->andReturn($index = m::mock(stdClass::class));
2525
$index->shouldReceive('addDocuments')->with([
2626
[
27-
'id' => 1
28-
]
27+
'id' => 1,
28+
],
2929
]);
3030

3131
$engine = new MeilisearchEngine($client);
@@ -75,7 +75,7 @@ public function map_correctly_maps_results_to_models()
7575
$results = $engine->map($builder, [
7676
'nbHits' => 1, 'hits' => [
7777
['id' => 1],
78-
]
78+
],
7979
], $model);
8080

8181
$this->assertEquals(1, count($results));
@@ -93,7 +93,7 @@ public function map_method_respects_order()
9393
new SearchableModel(['id' => 1]),
9494
new SearchableModel(['id' => 2]),
9595
new SearchableModel(['id' => 3]),
96-
new SearchableModel(['id' => 4])
96+
new SearchableModel(['id' => 4]),
9797
]));
9898

9999
$builder = m::mock(Builder::class);
@@ -104,7 +104,7 @@ public function map_method_respects_order()
104104
['id' => 2],
105105
['id' => 4],
106106
['id' => 3],
107-
]
107+
],
108108
], $model);
109109

110110
$this->assertEquals(4, count($results));

tests/TestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public function setUp(): void
1414
protected function getPackageProviders($app)
1515
{
1616
return [
17-
MeilisearchServiceProvider::class
17+
MeilisearchServiceProvider::class,
1818
];
1919
}
2020

0 commit comments

Comments
 (0)