Completed
Pull Request — develop (#891)
by Luke
03:48
created

ReindexMviewCommand::configure()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 14
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 14
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 9
nc 1
nop 0
1
<?php
2
3
namespace N98\Magento\Command\Indexer;
4
5
use Symfony\Component\Console\Input\InputArgument;
6
use Symfony\Component\Console\Input\InputInterface;
7
use Symfony\Component\Console\Output\OutputInterface;
8
9
class ReindexMviewCommand extends AbstractMviewIndexerCommand
10
{
11
    protected function configure()
12
    {
13
        $this
14
            ->setName('index:reindex:mview')
15
            ->addArgument('table_name', InputArgument::REQUIRED, 'View table name"')
16
            ->setDescription('Reindex a magento index by code using the materialised view functionality');
17
18
        $help = <<<HELP
19
Trigger a mview index by table_name.
20
21
   $ n98-magerun.phar index:reindex:mview [table_name]
22
HELP;
23
        $this->setHelp($help);
24
    }
25
26
    /**
27
     * @param InputInterface $input
28
     * @param OutputInterface $output
29
     *
30
     * @return int|void
31
     */
32
    protected function execute(InputInterface $input, OutputInterface $output)
33
    {
34
        $this->detectMagento($output, true);
35
        if (!$this->initMagento()) {
36
            return;
37
        }
38
        $tableName = $input->getArgument('table_name');
39
40
        $indexers = $this->getIndexers();
41
42
        if (!array_key_exists($tableName, $indexers)) {
43
            throw new \InvalidArgumentException("$tableName is not a view table");
44
        }
45
46
        $indexerData = $indexers[$tableName];
47
        $indexTable = (string) $indexerData->index_table;
48
        $actionName = (string) $indexerData->action_model->changelog;
49
50
        $client = $this->getMviewClient();
51
        $client->init($indexTable);
52
        if (!$client->getMetadata()->getId()) {
53
            throw new \InvalidArgumentException("Could not load metadata for $tableName");
54
        }
55
56
        $output->writeln("<info>Starting mview indexer <comment>{$indexTable}</comment> with action <comment>{$actionName}</comment> </info>");
0 ignored issues
show
Coding Style introduced by
This line exceeds maximum limit of 120 characters; contains 143 characters

Overly long lines are hard to read on any screen. Most code styles therefor impose a maximum limit on the number of characters in a line.

Loading history...
57
        $client->execute($actionName);
58
        $output->writeln("<info>Done</info>");
59
    }
60
}
61