From bec1572fcba78b1a53a1a5d58f1cc4d5aee49d75 Mon Sep 17 00:00:00 2001 From: "ext.jeremy.guillot@maxicoffee.domains" Date: Thu, 31 Jul 2025 16:11:16 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20refonte=20de=20la=20gestion=20des=20?= =?UTF-8?q?=C3=A9v=C3=A9nements=20de=20cr=C3=A9ation=20de=20mangas=20en=20?= =?UTF-8?q?rempla=C3=A7ant=20le=20MessageBus=20par=20un=20EventDispatcher.?= =?UTF-8?q?=20Ajout=20d'un=20=C3=A9couteur=20d'=C3=A9v=C3=A9nements=20Mang?= =?UTF-8?q?aCreated=20pour=20g=C3=A9rer=20la=20r=C3=A9cup=C3=A9ration=20de?= =?UTF-8?q?s=20chapitres=20apr=C3=A8s=20la=20cr=C3=A9ation=20d'un=20manga.?= =?UTF-8?q?=20Impl=C3=A9mentation=20d'un=20EventDispatcher=20bas=C3=A9=20s?= =?UTF-8?q?ur=20Symfony=20Messenger.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CreateMangaFromMangadexHandler.php | 6 +++--- .../MangaCreatedEventListener.php} | 10 +++++----- .../MangaCreatedMessageHandler.php | 20 +++++++++++++++++++ .../Contract/EventDispatcherInterface.php | 8 ++++++++ .../SymfonyMessengerEventDispatcher.php | 17 ++++++++++++++++ 5 files changed, 53 insertions(+), 8 deletions(-) rename src/Domain/Manga/{Infrastructure/EventListener/MangaCreatedListener.php => Application/EventListener/MangaCreatedEventListener.php} (55%) create mode 100644 src/Domain/Manga/Infrastructure/MessageHandler/MangaCreatedMessageHandler.php create mode 100644 src/Domain/Shared/Domain/Contract/EventDispatcherInterface.php create mode 100644 src/Domain/Shared/Infrastructure/Messenger/SymfonyMessengerEventDispatcher.php diff --git a/src/Domain/Manga/Application/CommandHandler/CreateMangaFromMangadexHandler.php b/src/Domain/Manga/Application/CommandHandler/CreateMangaFromMangadexHandler.php index a25c27f..a05d9f9 100644 --- a/src/Domain/Manga/Application/CommandHandler/CreateMangaFromMangadexHandler.php +++ b/src/Domain/Manga/Application/CommandHandler/CreateMangaFromMangadexHandler.php @@ -10,7 +10,7 @@ use App\Domain\Manga\Domain\Event\MangaCreated; use App\Domain\Manga\Domain\Exception\MangaNotFoundException; use App\Domain\Manga\Domain\Model\ValueObject\ExternalId; use App\Domain\Manga\Domain\Model\ValueObject\ImageUrls; -use Symfony\Component\Messenger\MessageBusInterface; +use App\Domain\Shared\Domain\Contract\EventDispatcherInterface; readonly class CreateMangaFromMangadexHandler { @@ -18,7 +18,7 @@ readonly class CreateMangaFromMangadexHandler private MangaProviderInterface $mangaProvider, private MangaRepositoryInterface $mangaRepository, private ImageProcessorInterface $imageProcessor, - private MessageBusInterface $messageBus + private EventDispatcherInterface $eventDispatcher ) {} public function handle(CreateMangaFromMangadex $command): void @@ -44,6 +44,6 @@ readonly class CreateMangaFromMangadexHandler $this->mangaRepository->save($manga); - $this->messageBus->dispatch(new MangaCreated($manga->getId()->getValue(), $command->externalId)); + $this->eventDispatcher->dispatch(new MangaCreated($manga->getId()->getValue(), $command->externalId)); } } diff --git a/src/Domain/Manga/Infrastructure/EventListener/MangaCreatedListener.php b/src/Domain/Manga/Application/EventListener/MangaCreatedEventListener.php similarity index 55% rename from src/Domain/Manga/Infrastructure/EventListener/MangaCreatedListener.php rename to src/Domain/Manga/Application/EventListener/MangaCreatedEventListener.php index 6cb5f88..bc20e4e 100644 --- a/src/Domain/Manga/Infrastructure/EventListener/MangaCreatedListener.php +++ b/src/Domain/Manga/Application/EventListener/MangaCreatedEventListener.php @@ -1,21 +1,21 @@ messageBus->dispatch( + $this->fetchMangaChaptersHandler->handle( new FetchMangaChapters(new MangaId($event->mangaId)) ); } diff --git a/src/Domain/Manga/Infrastructure/MessageHandler/MangaCreatedMessageHandler.php b/src/Domain/Manga/Infrastructure/MessageHandler/MangaCreatedMessageHandler.php new file mode 100644 index 0000000..cfdb6bb --- /dev/null +++ b/src/Domain/Manga/Infrastructure/MessageHandler/MangaCreatedMessageHandler.php @@ -0,0 +1,20 @@ +listener->__invoke($event); + } +} diff --git a/src/Domain/Shared/Domain/Contract/EventDispatcherInterface.php b/src/Domain/Shared/Domain/Contract/EventDispatcherInterface.php new file mode 100644 index 0000000..832a0f2 --- /dev/null +++ b/src/Domain/Shared/Domain/Contract/EventDispatcherInterface.php @@ -0,0 +1,8 @@ +bus->dispatch($event); + } +}