diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-05-29 15:30:27 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-29 15:30:27 +0300 |
commit | b03752b1d9fd2a51492d69823c9866fe2ab44ed4 (patch) | |
tree | 33a5f82e2400b8413617509c350a926306482724 | |
parent | 00edb8f2d45d5a00406dd32c6a447f97fac5ab01 (diff) | |
parent | dd5995a2f8ca1331ae0c466cc812d8b3baf010b2 (diff) |
Merge pull request #9620 from nextcloud/backport/9576/stable13
[stable13] Emit event when running ./occ db:add-missing-indices
-rw-r--r-- | core/Command/Db/AddMissingIndices.php | 21 | ||||
-rw-r--r-- | core/register_command.php | 2 | ||||
-rw-r--r-- | lib/public/IDBConnection.php | 3 |
3 files changed, 18 insertions, 8 deletions
diff --git a/core/Command/Db/AddMissingIndices.php b/core/Command/Db/AddMissingIndices.php index 314bed8ccb1..c80b0ba8b8e 100644 --- a/core/Command/Db/AddMissingIndices.php +++ b/core/Command/Db/AddMissingIndices.php @@ -27,6 +27,8 @@ use OCP\IDBConnection; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\GenericEvent; /** * Class AddMissingIndices @@ -41,12 +43,14 @@ class AddMissingIndices extends Command { /** @var IDBConnection */ private $connection; - /** - * @param IDBConnection $connection - */ - public function __construct(IDBConnection $connection) { - $this->connection = $connection; + /** @var EventDispatcherInterface */ + private $dispatcher; + + public function __construct(IDBConnection $connection, EventDispatcherInterface $dispatcher) { parent::__construct(); + + $this->connection = $connection; + $this->dispatcher = $dispatcher; } protected function configure() { @@ -58,6 +62,9 @@ class AddMissingIndices extends Command { protected function execute(InputInterface $input, OutputInterface $output) { $this->addShareTableIndicies($output); + // Dispatch event so apps can also update indexes if needed + $event = new GenericEvent($output); + $this->dispatcher->dispatch(IDBConnection::ADD_MISSING_INDEXES_EVENT, $event); } /** @@ -73,8 +80,8 @@ class AddMissingIndices extends Command { $schema = new SchemaWrapper($this->connection); $updated = false; - if ($schema->hasTable("share")) { - $table = $schema->getTable("share"); + if ($schema->hasTable('share')) { + $table = $schema->getTable('share'); if (!$table->hasIndex('share_with_index')) { $output->writeln('<info>Adding additional index to the share table, this can take some time...</info>'); $table->addIndex(['share_with'], 'share_with_index'); diff --git a/core/register_command.php b/core/register_command.php index 372d775dc14..eb5a06b1aab 100644 --- a/core/register_command.php +++ b/core/register_command.php @@ -90,7 +90,7 @@ if (\OC::$server->getConfig()->getSystemValue('installed', false)) { $application->add(new OC\Core\Command\Db\ConvertType(\OC::$server->getConfig(), new \OC\DB\ConnectionFactory(\OC::$server->getSystemConfig()))); $application->add(new OC\Core\Command\Db\ConvertMysqlToMB4(\OC::$server->getConfig(), \OC::$server->getDatabaseConnection(), \OC::$server->getURLGenerator(), \OC::$server->getLogger())); $application->add(new OC\Core\Command\Db\ConvertFilecacheBigInt(\OC::$server->getDatabaseConnection())); - $application->add(new OC\Core\Command\Db\AddMissingIndices(\OC::$server->getDatabaseConnection())); + $application->add(new OC\Core\Command\Db\AddMissingIndices(\OC::$server->getDatabaseConnection(), \OC::$server->getEventDispatcher())); $application->add(new OC\Core\Command\Db\Migrations\StatusCommand(\OC::$server->getDatabaseConnection())); $application->add(new OC\Core\Command\Db\Migrations\MigrateCommand(\OC::$server->getDatabaseConnection())); $application->add(new OC\Core\Command\Db\Migrations\GenerateCommand(\OC::$server->getDatabaseConnection())); diff --git a/lib/public/IDBConnection.php b/lib/public/IDBConnection.php index f0783d5231a..024e759de6e 100644 --- a/lib/public/IDBConnection.php +++ b/lib/public/IDBConnection.php @@ -45,6 +45,9 @@ use OCP\DB\QueryBuilder\IQueryBuilder; * @since 6.0.0 */ interface IDBConnection { + + const ADD_MISSING_INDEXES_EVENT = self::class . '::ADD_MISSING_INDEXES'; + /** * Gets the QueryBuilder for the connection. * |