From a7c27df3a2c33007b599e00a66d91525f998ee58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien?= Date: Thu, 20 Feb 2025 14:49:23 +0100 Subject: [PATCH] Improve index & remove entity message handler --- src/Message/Handler/AbstractEntityHandler.php | 9 +++++---- src/Message/Handler/IndexEntityHandler.php | 5 +++-- src/Message/Handler/RemoveEntityHandler.php | 5 +++-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/Message/Handler/AbstractEntityHandler.php b/src/Message/Handler/AbstractEntityHandler.php index ee25472..2915d0d 100644 --- a/src/Message/Handler/AbstractEntityHandler.php +++ b/src/Message/Handler/AbstractEntityHandler.php @@ -22,7 +22,10 @@ public function __construct(ManagerRegistry $managerRegistry, private readonly I $this->managerRegistry = $managerRegistry; } - public function __invoke(RemoveEntity|IndexEntity $message): void + /** + * @param callable(IndexableInterface $entity, Index $index):void $action + */ + protected function handle(RemoveEntity|IndexEntity $message, callable $action): void { $entity = $this->getManager($message->class)->find($message->class, $message->id); if (null === $entity) { @@ -30,9 +33,7 @@ public function __invoke(RemoveEntity|IndexEntity $message): void } foreach ($this->indexRegistry->getByEntity($message->class) as $index) { - $this->execute($entity, $index); + $action($entity, $index); } } - - abstract protected function execute(IndexableInterface $entity, Index $index): void; } diff --git a/src/Message/Handler/IndexEntityHandler.php b/src/Message/Handler/IndexEntityHandler.php index ea73fd5..62c64b0 100644 --- a/src/Message/Handler/IndexEntityHandler.php +++ b/src/Message/Handler/IndexEntityHandler.php @@ -5,12 +5,13 @@ namespace Setono\SyliusMeilisearchPlugin\Message\Handler; use Setono\SyliusMeilisearchPlugin\Config\Index; +use Setono\SyliusMeilisearchPlugin\Message\Command\IndexEntity; use Setono\SyliusMeilisearchPlugin\Model\IndexableInterface; final class IndexEntityHandler extends AbstractEntityHandler { - protected function execute(IndexableInterface $entity, Index $index): void + public function __invoke(IndexEntity $message): void { - $index->indexer()->indexEntity($entity); + $this->handle($message, static fn (IndexableInterface $entity, Index $index) => $index->indexer()->indexEntity($entity)); } } diff --git a/src/Message/Handler/RemoveEntityHandler.php b/src/Message/Handler/RemoveEntityHandler.php index ad105e0..e0fb837 100644 --- a/src/Message/Handler/RemoveEntityHandler.php +++ b/src/Message/Handler/RemoveEntityHandler.php @@ -5,12 +5,13 @@ namespace Setono\SyliusMeilisearchPlugin\Message\Handler; use Setono\SyliusMeilisearchPlugin\Config\Index; +use Setono\SyliusMeilisearchPlugin\Message\Command\RemoveEntity; use Setono\SyliusMeilisearchPlugin\Model\IndexableInterface; final class RemoveEntityHandler extends AbstractEntityHandler { - protected function execute(IndexableInterface $entity, Index $index): void + public function __invoke(RemoveEntity $message): void { - $index->indexer()->removeEntity($entity); + $this->handle($message, static fn (IndexableInterface $entity, Index $index) => $index->indexer()->removeEntity($entity)); } }