Files
Mangarr/src/Domain/Manga/Application/CommandHandler/CheckMonitoredMangasHandler.php
ext.jeremy.guillot@maxicoffee.domains 3f08e1c899 fix(monitoring): corriger le scheduler qui ne détectait plus les nouveaux chapitres
- MonitoringSchedule : supprimer la date passée au message (était évaluée une
  seule fois au démarrage du container, rendant la requête caduque après le
  premier cycle)
- CheckMonitoredMangasHandler : calculer `since` dynamiquement à l'exécution
  (`new \DateTimeImmutable('-2 hours')`) plutôt que de dépendre du message
- AutoScrapingListener : corriger le TypeError silencieux — créer un ScrapingJob
  avant d'appeler ScrapeChapterHandler (paramètre jobId manquant)

Ajoute les tests unitaires CheckMonitoredMangasHandlerTest et AutoScrapingListenerTest.
2026-03-27 12:08:06 +01:00

33 lines
1.0 KiB
PHP

<?php
namespace App\Domain\Manga\Application\CommandHandler;
use App\Domain\Manga\Application\Command\CheckMonitoredMangas;
use App\Domain\Manga\Application\Command\RefreshMangaChapters;
use App\Domain\Manga\Application\Query\MonitoringCriteria;
use App\Domain\Manga\Domain\Contract\Repository\MangaRepositoryInterface;
use Symfony\Component\Messenger\MessageBusInterface;
readonly class CheckMonitoredMangasHandler
{
public function __construct(
private MangaRepositoryInterface $mangaRepository,
private MessageBusInterface $commandBus,
) {
}
public function handle(CheckMonitoredMangas $command): void
{
$criteria = new MonitoringCriteria(
enabled: true,
lastCheckBefore: new \DateTimeImmutable('-2 hours')
);
$monitoredMangas = $this->mangaRepository->findByMonitoringCriteria($criteria);
foreach ($monitoredMangas as $manga) {
$this->commandBus->dispatch(new RefreshMangaChapters($manga->getId()));
}
}
}