Merge pull request 'fix(monitoring): corriger la résolution de l'ID chapitre après synchronisation MangaDex' (#45) from fix/monitoring-chapter-id-mismatch into main
All checks were successful
Deploy / deploy (push) Successful in 1m5s

Reviewed-on: #45
This commit was merged in pull request #45.
This commit is contained in:
2026-03-27 15:04:20 +01:00
4 changed files with 18 additions and 10 deletions

View File

@@ -26,18 +26,26 @@ readonly class RefreshMangaChaptersHandler
throw new \RuntimeException('Manga not found'); throw new \RuntimeException('Manga not found');
} }
// Synchronisation + récupération des nouveaux IDs // Synchronisation + récupération des numéros de nouveaux chapitres
$newChapterIds = $this->chapterSynchronizationService->synchronizeChapters($manga); $newChapterNumbers = $this->chapterSynchronizationService->synchronizeChapters($manga);
// Mise à jour de la date de monitoring // Mise à jour de la date de monitoring
$manga->updateLastMonitoringCheck(new \DateTimeImmutable()); $manga->updateLastMonitoringCheck(new \DateTimeImmutable());
$this->mangaRepository->save($manga); $this->mangaRepository->save($manga);
// Événement de scraping pour chaque nouveau chapitre // Événement de scraping pour chaque nouveau chapitre
foreach ($newChapterIds as $chapterId) { // On retrouve l'ID réel (PK integer) après save() car le chapitre n'a
// son identifiant définitif qu'une fois persisté en base.
foreach ($newChapterNumbers as $chapterNumber) {
$saved = $this->mangaRepository->findChapterByMangaIdAndNumber(
$manga->getId()->getValue(),
$chapterNumber
);
if ($saved) {
$this->eventBus->dispatch( $this->eventBus->dispatch(
new ChapterReadyForScraping(new ChapterId($chapterId)) new ChapterReadyForScraping(new ChapterId($saved->getId()))
); );
} }
} }
}
} }

View File

@@ -9,7 +9,7 @@ interface ChapterSynchronizationServiceInterface
/** /**
* Synchronise les chapitres d'un manga depuis la source externe. * Synchronise les chapitres d'un manga depuis la source externe.
* *
* @return string[] IDs des nouveaux chapitres ajoutés * @return float[] Numéros des nouveaux chapitres ajoutés
*/ */
public function synchronizeChapters(Manga $manga): array; public function synchronizeChapters(Manga $manga): array;
} }

View File

@@ -96,11 +96,11 @@ readonly class MangadxChapterSynchronizationService implements ChapterSynchroniz
$newChapterIds = []; $newChapterIds = [];
// Sauvegarde uniquement les nouveaux chapitres et collecte leurs IDs // Sauvegarde uniquement les nouveaux chapitres et collecte leurs numéros
foreach ($chaptersByNumber as $chapterNumber => $chapter) { foreach ($chaptersByNumber as $chapterNumber => $chapter) {
if (!isset($existingChapters[(float) $chapterNumber])) { if (!isset($existingChapters[(float) $chapterNumber])) {
$manga->addChapter($chapter); $manga->addChapter($chapter);
$newChapterIds[] = $chapter->getId(); $newChapterIds[] = $chapter->getNumber();
} }
} }

View File

@@ -18,8 +18,8 @@ class InMemoryChapterSynchronizationService implements ChapterSynchronizationSer
'synchronized_at' => new \DateTimeImmutable(), 'synchronized_at' => new \DateTimeImmutable(),
]; ];
// Retourne les IDs des chapitres synchronisés (simulation) // Retourne les numéros des chapitres synchronisés (simulation)
return ['chapter-1', 'chapter-2']; return [1.0, 2.0];
} }
/** /**