From 41ee23a0543bac873b03f1a8e45178f9ec0a4075 Mon Sep 17 00:00:00 2001 From: Bjoern Schiessle Date: Fri, 15 Dec 2017 10:45:00 +0100 Subject: make occ command more generic Signed-off-by: Bjoern Schiessle --- core/Command/Db/AddIndexToShareTable.php | 73 ------------------------- core/Command/Db/AddMissingIndices.php | 91 ++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+), 73 deletions(-) delete mode 100644 core/Command/Db/AddIndexToShareTable.php create mode 100644 core/Command/Db/AddMissingIndices.php (limited to 'core/Command/Db') diff --git a/core/Command/Db/AddIndexToShareTable.php b/core/Command/Db/AddIndexToShareTable.php deleted file mode 100644 index cfd5c1871b2..00000000000 --- a/core/Command/Db/AddIndexToShareTable.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - * - */ - - -namespace OC\Core\Command\Db; - -use OC\DB\SchemaWrapper; -use OCP\IDBConnection; -use Symfony\Component\Console\Command\Command; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class AddIndexToShareTable extends Command { - - /** @var IDBConnection */ - private $connection; - - /** - * @param IDBConnection $connection - */ - public function __construct(IDBConnection $connection) { - $this->connection = $connection; - parent::__construct(); - } - - protected function configure() { - $this - ->setName('db:add-index-to-share-table') - ->setDescription('Add a index to share_with at the share table to increase performance'); - } - - protected function execute(InputInterface $input, OutputInterface $output) { - - $schema = new SchemaWrapper($this->connection); - $updated = false; - - if ($schema->hasTable("share")) { - $table = $schema->getTable("share"); - if (!$table->hasIndex('share_with_index')) { - $output->writeln('Adding additional index to the share table, this can take some time...'); - $table->addIndex(['share_with'], 'share_with_index'); - $this->connection->migrateToSchema($schema->getWrappedSchema()); - $updated = true; - $output->writeln('Share table updated successfully.'); - } - } - - if (!$updated) { - $output->writeln('All index already existed, nothing to do.'); - } - - return 0; - - } -} diff --git a/core/Command/Db/AddMissingIndices.php b/core/Command/Db/AddMissingIndices.php new file mode 100644 index 00000000000..314bed8ccb1 --- /dev/null +++ b/core/Command/Db/AddMissingIndices.php @@ -0,0 +1,91 @@ + + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ + + +namespace OC\Core\Command\Db; + +use OC\DB\SchemaWrapper; +use OCP\IDBConnection; +use Symfony\Component\Console\Command\Command; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Output\OutputInterface; + +/** + * Class AddMissingIndices + * + * if you added any new indices to the database, this is the right place to add + * it your update routine for existing instances + * + * @package OC\Core\Command\Db + */ +class AddMissingIndices extends Command { + + /** @var IDBConnection */ + private $connection; + + /** + * @param IDBConnection $connection + */ + public function __construct(IDBConnection $connection) { + $this->connection = $connection; + parent::__construct(); + } + + protected function configure() { + $this + ->setName('db:add-missing-indices') + ->setDescription('Add missing indices to the database tables'); + } + + protected function execute(InputInterface $input, OutputInterface $output) { + $this->addShareTableIndicies($output); + + } + + /** + * add missing indices to the share table + * + * @param OutputInterface $output + * @throws \Doctrine\DBAL\Schema\SchemaException + */ + private function addShareTableIndicies(OutputInterface $output) { + + $output->writeln('Check indices of the share table.'); + + $schema = new SchemaWrapper($this->connection); + $updated = false; + + if ($schema->hasTable("share")) { + $table = $schema->getTable("share"); + if (!$table->hasIndex('share_with_index')) { + $output->writeln('Adding additional index to the share table, this can take some time...'); + $table->addIndex(['share_with'], 'share_with_index'); + $this->connection->migrateToSchema($schema->getWrappedSchema()); + $updated = true; + $output->writeln('Share table updated successfully.'); + } + } + + if (!$updated) { + $output->writeln('Done.'); + } + } +} -- cgit v1.2.3