- ScrapingJob: mangaId/chapterNumber/sourceId optionnels (nullable) pour permettre la création en PENDING sans lookup DB dans le StateProcessor - ScrapeChapter: ajoute jobId (pré-généré par le StateProcessor) - ScrapeChapterStateProcessor: crée et persiste le job PENDING avant dispatch; injecte JobRepositoryInterface uniquement - ScrapeChapterHandler: supprime EntityManagerInterface, beginTransaction/ commit/rollback; charge le job existant via jobId, complete() sur succès seulement, fail() si toutes les sources échouent - ScrapeChapterHandlerTest: pré-crée le job, passe jobId dans la commande, supprime le mock EntityManagerInterface - ScrapeChapterTest: accès aux messages via static InMemoryMessageBus, vérifie la présence du jobId dans la commande dispatchée
13 lines
202 B
PHP
13 lines
202 B
PHP
<?php
|
|
|
|
namespace App\Domain\Scraping\Application\Command;
|
|
|
|
readonly class ScrapeChapter
|
|
{
|
|
public function __construct(
|
|
public string $chapterId,
|
|
public string $jobId
|
|
) {
|
|
}
|
|
}
|