8 use Symfony\Component\Console\Input\InputInterface;
9 use Symfony\Component\Console\Output\OutputInterface;
12 use Symfony\Component\Console\Helper\Table;
24 $this->setName(
'indexer:status')
25 ->setDescription(
'Shows status of Indexer')
37 $table->setHeaders([
'Title',
'Status',
'Update On',
'Schedule Status',
'Schedule Updated']);
47 'Status' => $this->getStatus(
$indexer),
48 'Update On' =>
$indexer->isScheduled() ?
'Schedule' :
'Save',
49 'Schedule Status' =>
'',
54 $state = $view->getState();
55 $rowData[
'Schedule Status'] =
"{$state->getStatus()} ({$this->getPendingCount($view)} in backlog)";
56 $rowData[
'Updated'] = $state->getUpdated();
62 usort($rows,
function ($comp1, $comp2) {
63 return strcmp($comp1[
'Title'], $comp2[
'Title']);
78 case \Magento\Framework\Indexer\StateInterface::STATUS_VALID:
81 case \Magento\Framework\Indexer\StateInterface::STATUS_INVALID:
84 case \Magento\Framework\Indexer\StateInterface::STATUS_WORKING:
95 private function getPendingCount(Mview\ViewInterface $view)
97 $changelog = $view->getChangelog();
100 $currentVersionId = $changelog->getVersion();
101 }
catch (Mview\View\ChangelogTableNotExistsException $e) {
105 $state = $view->getState();
107 $pendingCount = count($changelog->getList($state->getVersionId(), $currentVersionId));
109 $pendingString =
"<error>$pendingCount</error>";
110 if ($pendingCount <= 0) {
111 $pendingString =
"<info>$pendingCount</info>";
114 return $pendingString;
getIndexers(InputInterface $input)
execute(InputInterface $input, OutputInterface $output)