/** * @param QueryRequest $query * @param SymfonyStyle $io * @param DateTime $date * @throws \QCharts\CoreBundle\Exception\WriteReadException */ protected function updateQuery(QueryRequest $query, SymfonyStyle $io, DateTime $date) { $modes = QueryUpdateCommand::getModes(); $dateFormat = SnapshotService::FILE_DATE_FORMAT; /** @var SnapshotService $snapshotService */ $snapshotService = $this->getContainer()->get("qcharts.core.snapshot_service"); /** @var QueryRepository $qrRepo */ $qrRepo = $this->getContainer()->get("qcharts.query_repo"); $cron = CronExpression::factory($query->getCronExpression()); $queryDate = $query->getConfig()->getFetchedOn()->format($dateFormat); $io->newLine(); $io->section("QCharts checking: '{$query->getTitle()}' with date: {$queryDate}"); if ($cron->isDue($date)) { //update it! $duration = $snapshotService->updateSnapshot($query); $io->newLine(1); $io->note("QCharts updating:"); $io->table(['Title', 'CronExpression', 'Last fetch', 'Mode', 'Query execution time'], [[$query->getTitle(), $query->getCronExpression(), $query->getConfig()->getFetchedOn()->format($dateFormat), $modes[$query->getConfig()->getIsCached()], "{$duration} secs."]]); $qrRepo->setUpdatedOn($query, $date); } $io->success("QCharts '{$query->getTitle()}' is up to date, next run: {$cron->getNextRunDate()->format($dateFormat)}"); $io->progressAdvance(1); $io->newLine(2); }