Example #1
0
 /**
  * @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);
 }