improve permission logic again and allow flushing indices with command

This commit is contained in:
Daniel Klabbers 2021-10-14 00:56:32 +02:00
parent e3d436d5dd
commit e2e56831e5
2 changed files with 10 additions and 4 deletions

View File

@ -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));

View File

@ -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();