fix: stuck monitors
This commit is contained in:
@@ -4,6 +4,7 @@ namespace App\Monitor\Framework\Entity;
|
||||
|
||||
use App\Monitor\Framework\Repository\MonitorRepository;
|
||||
use App\User\Framework\Entity\User;
|
||||
use Carbon\Carbon;
|
||||
use Doctrine\Common\Collections\ArrayCollection;
|
||||
use Doctrine\Common\Collections\Collection;
|
||||
use Doctrine\DBAL\Types\Types;
|
||||
@@ -148,7 +149,7 @@ class Monitor
|
||||
|
||||
public function getLastSearch(): ?\DateTimeInterface
|
||||
{
|
||||
return $this->lastSearch;
|
||||
return Carbon::parse($this->lastSearch);
|
||||
}
|
||||
|
||||
public function setLastSearch(?\DateTimeInterface $lastSearch): static
|
||||
|
||||
@@ -7,6 +7,7 @@ use App\Monitor\Action\Command\MonitorTvEpisodeCommand;
|
||||
use App\Monitor\Action\Command\MonitorTvSeasonCommand;
|
||||
use App\Monitor\Action\Command\MonitorTvShowCommand;
|
||||
use App\Monitor\Framework\Repository\MonitorRepository;
|
||||
use Carbon\Carbon;
|
||||
use Psr\Log\LoggerInterface;
|
||||
use Symfony\Component\Messenger\MessageBusInterface;
|
||||
use Symfony\Component\Scheduler\Attribute\AsCronTask;
|
||||
@@ -23,6 +24,8 @@ class MonitorDispatcher
|
||||
public function __invoke() {
|
||||
$this->logger->info('[MonitorDispatcher] Executing MonitorDispatcher');
|
||||
|
||||
$this->cleanupStuckMonitors();
|
||||
|
||||
$monitorHandlers = [
|
||||
'movie' => MonitorMovieCommand::class,
|
||||
'tvepisode' => MonitorTvEpisodeCommand::class,
|
||||
@@ -41,4 +44,16 @@ class MonitorDispatcher
|
||||
$this->bus->dispatch(new $command($monitor->getId()));
|
||||
}
|
||||
}
|
||||
|
||||
private function cleanupStuckMonitors(): void
|
||||
{
|
||||
$monitors = $this->monitorRepository->findBy(['status' => 'In Progress']);
|
||||
foreach ($monitors as $monitor) {
|
||||
// Reset the status to active so it will be executed again
|
||||
if ($monitor->getLastSearch()->diffInHours(Carbon::today()) > 6) {
|
||||
$monitor->setStatus('Active');
|
||||
}
|
||||
}
|
||||
$this->monitorRepository->getEntityManager()->flush();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user