Skip to content

Commit e1d4d69

Browse files
[11.x] Use scout prefix when deleting all indexes (#841)
* use scout prefix when deleting indexes * document changed behavior * Update MeilisearchEngine.php * Update UPGRADE.md --------- Co-authored-by: Taylor Otwell <taylor@laravel.com>
1 parent 2bfdd53 commit e1d4d69

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

UPGRADE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ PR: https://github.com/laravel/scout/pull/839
88

99
In previous Scout releases, the Algolia engine utilized `numericFilters` to power `where` conditions. However, `numericFilters` does not support simple string matching. In Scout 11.x, `filters` is now used instead of `numericFilters`.
1010

11+
### Meilisearch Engine `scout:delete-all-indexes` Command
12+
13+
In previous releases, the Meilisearch engine’s `scout:delete-all-indexes` command would drop all indexes from the Meilisearch server. In Scout 11.x, the command now only drops indexes with the application's currently configured Scout prefix. Typically, this corresponds to the `SCOUT_PREFIX` environment variable and / or the `scout.prefix` configuration value.
14+
1115
## Upgrading To 10.0 From 9.x
1216

1317
### Minimum Versions

src/Engines/MeilisearchEngine.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Laravel\Scout\Engines;
44

55
use BackedEnum;
6+
use Illuminate\Support\Facades\Config;
67
use Illuminate\Support\LazyCollection;
78
use Laravel\Scout\Builder;
89
use Laravel\Scout\Jobs\RemoveableScoutCollection;
@@ -430,7 +431,9 @@ public function deleteAllIndexes()
430431
$indexes = $this->meilisearch->getIndexes($query);
431432

432433
foreach ($indexes->getResults() as $index) {
433-
$tasks[] = $index->delete();
434+
if (str($index->getUid())->startsWith(Config::get('scout.prefix'))) {
435+
$tasks[] = $index->delete();
436+
}
434437
}
435438

436439
return $tasks;

tests/Unit/MeilisearchEngineTest.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -636,6 +636,31 @@ public function test_delete_all_indexes_works_with_pagination()
636636
$engine = new MeilisearchEngine($client);
637637
$engine->deleteAllIndexes();
638638
}
639+
640+
public function test_delete_all_indexes_only_deletes_indexes_with_scout_prefix()
641+
{
642+
Config::shouldReceive('get')->with('scout.prefix')->andReturn('app_');
643+
644+
$client = m::mock(Client::class);
645+
$client->shouldReceive('getIndexes')->andReturn($indexesResults = m::mock(IndexesResults::class));
646+
647+
$otherIndex = m::mock(Indexes::class);
648+
$otherIndex->shouldReceive('getUid')->andReturn('users');
649+
650+
$prefixedIndex = m::mock(Indexes::class);
651+
$prefixedIndex->shouldReceive('getUid')->andReturn('app_users');
652+
653+
$indexesResults->shouldReceive('getResults')->zeroOrMoreTimes()->andReturn([
654+
$otherIndex,
655+
$prefixedIndex,
656+
]);
657+
658+
$otherIndex->shouldNotReceive('delete');
659+
$prefixedIndex->shouldReceive('delete')->once()->andReturn([]);
660+
661+
$engine = new MeilisearchEngine($client);
662+
$engine->deleteAllIndexes();
663+
}
639664
}
640665

641666
class MeilisearchCustomKeySearchableModel extends SearchableModel

0 commit comments

Comments
 (0)