container->tag([DiscussionSchema::class], 'blomstra.search.schemas'); $this->container->singleton(Client::class, function (Container $container) { $config = $container->make('flarum.config') ?? []; $meili = Arr::get($config, 'meili'); if (! $meili) { return null; } return new Client($meili); }); } public function boot() { /** @var array $schemas */ $schemas = $this->container->tagged('blomstra.search.schemas'); /** @var Dispatcher $events */ $events = resolve(Dispatcher::class); /** @var Queue $queue */ $queue = resolve(Queue::class); /** @var Schema $schema */ foreach ($schemas as $schema) { $schema::savingOn($events, function ($model) use ($schema, $queue) { $queue->push(new SavingJob($schema::model(), Collection::make([$model]))); }); $schema::deletingOn($events, function ($model) use ($schema, $queue) { $queue->push(new DeletingJob($schema::model(), Collection::make([$model]))); }); } } }