feat: refonte de la gestion des événements de création de mangas en remplaçant le MessageBus par un EventDispatcher. Ajout d'un écouteur d'événements MangaCreated pour gérer la récupération des chapitres après la création d'un manga. Implémentation d'un EventDispatcher basé sur Symfony Messenger.
This commit is contained in:
parent
f1eb97f156
commit
bec1572fcb
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domain\Manga\Infrastructure\EventListener;
|
||||
namespace App\Domain\Manga\Application\EventListener;
|
||||
|
||||
use App\Domain\Manga\Application\Command\FetchMangaChapters;
|
||||
use App\Domain\Manga\Application\CommandHandler\FetchMangaChaptersHandler;
|
||||
use App\Domain\Manga\Domain\Event\MangaCreated;
|
||||
use App\Domain\Manga\Domain\Model\ValueObject\MangaId;
|
||||
use Symfony\Component\Messenger\MessageBusInterface;
|
||||
|
||||
readonly class MangaCreatedListener
|
||||
readonly class MangaCreatedEventListener
|
||||
{
|
||||
public function __construct(
|
||||
private MessageBusInterface $messageBus
|
||||
private FetchMangaChaptersHandler $fetchMangaChaptersHandler
|
||||
) {}
|
||||
|
||||
public function __invoke(MangaCreated $event): void
|
||||
{
|
||||
$this->messageBus->dispatch(
|
||||
$this->fetchMangaChaptersHandler->handle(
|
||||
new FetchMangaChapters(new MangaId($event->mangaId))
|
||||
);
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Domain\Manga\Infrastructure\MessageHandler;
|
||||
|
||||
use App\Domain\Manga\Application\EventListener\MangaCreatedEventListener;
|
||||
use App\Domain\Manga\Domain\Event\MangaCreated;
|
||||
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
|
||||
|
||||
#[AsMessageHandler]
|
||||
readonly class MangaCreatedMessageHandler
|
||||
{
|
||||
public function __construct(private MangaCreatedEventListener $listener)
|
||||
{
|
||||
}
|
||||
|
||||
public function __invoke(MangaCreated $event): void
|
||||
{
|
||||
$this->listener->__invoke($event);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user