improve permission logic again and allow flushing indices with command
This commit is contained in:
parent
e3d436d5dd
commit
e2e56831e5
|
|
@ -9,10 +9,11 @@ use Illuminate\Contracts\Container\Container;
|
||||||
use Illuminate\Contracts\Queue\Queue;
|
use Illuminate\Contracts\Queue\Queue;
|
||||||
use Illuminate\Database\Eloquent\Collection;
|
use Illuminate\Database\Eloquent\Collection;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use MeiliSearch\Client;
|
||||||
|
|
||||||
class RebuildDocumentsCommand extends Command
|
class RebuildDocumentsCommand extends Command
|
||||||
{
|
{
|
||||||
protected $signature = 'blomstra:search:documents:rebuild';
|
protected $signature = 'blomstra:search:documents:rebuild {--flush : Flush the indices}';
|
||||||
protected $description = 'Rebuilds the complete search server with its documents.';
|
protected $description = 'Rebuilds the complete search server with its documents.';
|
||||||
|
|
||||||
public function handle(Container $container)
|
public function handle(Container $container)
|
||||||
|
|
@ -23,11 +24,17 @@ class RebuildDocumentsCommand extends Command
|
||||||
/** @var Queue $queue */
|
/** @var Queue $queue */
|
||||||
$queue = $container->make(Queue::class);
|
$queue = $container->make(Queue::class);
|
||||||
|
|
||||||
|
/** @var Client $meili */
|
||||||
|
$meili = $container->make(Client::class);
|
||||||
|
|
||||||
/** @var Schema $schema */
|
/** @var Schema $schema */
|
||||||
foreach ($schemas as $schema) {
|
foreach ($schemas as $schema) {
|
||||||
/** @var Model $model */
|
/** @var Model $model */
|
||||||
$model = $schema::model();
|
$model = $schema::model();
|
||||||
|
|
||||||
|
// Flush the index.
|
||||||
|
if ($this->option('flush')) $meili->index($schema::index())->delete();
|
||||||
|
|
||||||
$model::query()->chunk(50, function (Collection $collection) use ($model, $queue) {
|
$model::query()->chunk(50, function (Collection $collection) use ($model, $queue) {
|
||||||
$queue->push(new SavingJob($model, $collection));
|
$queue->push(new SavingJob($model, $collection));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,11 +44,10 @@ class DiscussionSchema extends Schema
|
||||||
})->flatten();
|
})->flatten();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! $permissions) {
|
if (! $permissions || $permissions->isEmpty()) {
|
||||||
$permissions = Permission::query()
|
$permissions = Permission::query()
|
||||||
->where('permission', 'viewForum')
|
->where('permission', 'viewForum')
|
||||||
->pluck('group_id')
|
->pluck('group_id');
|
||||||
->get();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$filters['groups'] = $permissions->toArray();
|
$filters['groups'] = $permissions->toArray();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue