diff options
author | Joas Schilling <coding@schilljs.com> | 2023-07-19 23:10:13 +0200 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2023-07-24 14:51:33 +0200 |
commit | 77c2b169a5da0d7cbb8269f8b240fa47edff90b7 (patch) | |
tree | 17497ae4a3b104882bf59f7a42d9bb76dedf2c4a /core/Command | |
parent | bd0a149a4ffa2a2e398dddb99f4b0d486bfc2cb7 (diff) | |
download | nextcloud-server-77c2b169a5da0d7cbb8269f8b240fa47edff90b7.tar.gz nextcloud-server-77c2b169a5da0d7cbb8269f8b240fa47edff90b7.zip |
fix(db): Move missing core primary keys to typed event
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'core/Command')
-rw-r--r-- | core/Command/Db/AddMissingPrimaryKeys.php | 122 |
1 files changed, 1 insertions, 121 deletions
diff --git a/core/Command/Db/AddMissingPrimaryKeys.php b/core/Command/Db/AddMissingPrimaryKeys.php index 6ace85d785b..b7435144933 100644 --- a/core/Command/Db/AddMissingPrimaryKeys.php +++ b/core/Command/Db/AddMissingPrimaryKeys.php @@ -67,8 +67,6 @@ class AddMissingPrimaryKeys extends Command { protected function execute(InputInterface $input, OutputInterface $output): int { $dryRun = $input->getOption('dry-run'); - $updated = $this->addCorePrimaryKeys($output, $dryRun); - // Dispatch event so apps can also update indexes if needed $event = new GenericEvent($output); $this->legacyDispatcher->dispatch(IDBConnection::ADD_MISSING_PRIMARY_KEYS_EVENT, $event); @@ -76,6 +74,7 @@ class AddMissingPrimaryKeys extends Command { $event = new AddMissingPrimaryKeyEvent(); $this->dispatcher->dispatchTyped($event); $missingKeys = $event->getMissingPrimaryKeys(); + $updated = false; if (!empty($missingKeys)) { $schema = new SchemaWrapper($this->connection); @@ -109,123 +108,4 @@ class AddMissingPrimaryKeys extends Command { return 0; } - - /** - * add missing indices to the share table - * - * @param OutputInterface $output - * @param bool $dryRun If true, will return the sql queries instead of running them. - * @return bool True when the schema changed - * @throws \Doctrine\DBAL\Schema\SchemaException - */ - private function addCorePrimaryKeys(OutputInterface $output, bool $dryRun): bool { - $output->writeln('<info>Check primary keys.</info>'); - - $schema = new SchemaWrapper($this->connection); - $updated = false; - - if ($schema->hasTable('federated_reshares')) { - $table = $schema->getTable('federated_reshares'); - if (!$table->hasPrimaryKey()) { - $output->writeln('<info>Adding primary key to the federated_reshares table, this can take some time...</info>'); - $table->setPrimaryKey(['share_id'], 'federated_res_pk'); - if ($table->hasIndex('share_id_index')) { - $table->dropIndex('share_id_index'); - } - $sqlQueries = $this->connection->migrateToSchema($schema->getWrappedSchema(), $dryRun); - if ($dryRun && $sqlQueries !== null) { - $output->writeln($sqlQueries); - } - $updated = true; - $output->writeln('<info>federated_reshares table updated successfully.</info>'); - } - } - - if ($schema->hasTable('systemtag_object_mapping')) { - $table = $schema->getTable('systemtag_object_mapping'); - if (!$table->hasPrimaryKey()) { - $output->writeln('<info>Adding primary key to the systemtag_object_mapping table, this can take some time...</info>'); - $table->setPrimaryKey(['objecttype', 'objectid', 'systemtagid'], 'som_pk'); - if ($table->hasIndex('mapping')) { - $table->dropIndex('mapping'); - } - $sqlQueries = $this->connection->migrateToSchema($schema->getWrappedSchema(), $dryRun); - if ($dryRun && $sqlQueries !== null) { - $output->writeln($sqlQueries); - } - $updated = true; - $output->writeln('<info>systemtag_object_mapping table updated successfully.</info>'); - } - } - - if ($schema->hasTable('comments_read_markers')) { - $table = $schema->getTable('comments_read_markers'); - if (!$table->hasPrimaryKey()) { - $output->writeln('<info>Adding primary key to the comments_read_markers table, this can take some time...</info>'); - $table->setPrimaryKey(['user_id', 'object_type', 'object_id'], 'crm_pk'); - if ($table->hasIndex('comments_marker_index')) { - $table->dropIndex('comments_marker_index'); - } - $sqlQueries = $this->connection->migrateToSchema($schema->getWrappedSchema(), $dryRun); - if ($dryRun && $sqlQueries !== null) { - $output->writeln($sqlQueries); - } - $updated = true; - $output->writeln('<info>comments_read_markers table updated successfully.</info>'); - } - } - - if ($schema->hasTable('collres_resources')) { - $table = $schema->getTable('collres_resources'); - if (!$table->hasPrimaryKey()) { - $output->writeln('<info>Adding primary key to the collres_resources table, this can take some time...</info>'); - $table->setPrimaryKey(['collection_id', 'resource_type', 'resource_id'], 'crr_pk'); - if ($table->hasIndex('collres_unique_res')) { - $table->dropIndex('collres_unique_res'); - } - $sqlQueries = $this->connection->migrateToSchema($schema->getWrappedSchema(), $dryRun); - if ($dryRun && $sqlQueries !== null) { - $output->writeln($sqlQueries); - } - $updated = true; - $output->writeln('<info>collres_resources table updated successfully.</info>'); - } - } - - if ($schema->hasTable('collres_accesscache')) { - $table = $schema->getTable('collres_accesscache'); - if (!$table->hasPrimaryKey()) { - $output->writeln('<info>Adding primary key to the collres_accesscache table, this can take some time...</info>'); - $table->setPrimaryKey(['user_id', 'collection_id', 'resource_type', 'resource_id'], 'cra_pk'); - if ($table->hasIndex('collres_unique_user')) { - $table->dropIndex('collres_unique_user'); - } - $sqlQueries = $this->connection->migrateToSchema($schema->getWrappedSchema(), $dryRun); - if ($dryRun && $sqlQueries !== null) { - $output->writeln($sqlQueries); - } - $updated = true; - $output->writeln('<info>collres_accesscache table updated successfully.</info>'); - } - } - - if ($schema->hasTable('filecache_extended')) { - $table = $schema->getTable('filecache_extended'); - if (!$table->hasPrimaryKey()) { - $output->writeln('<info>Adding primary key to the filecache_extended table, this can take some time...</info>'); - $table->setPrimaryKey(['fileid'], 'fce_pk'); - if ($table->hasIndex('fce_fileid_idx')) { - $table->dropIndex('fce_fileid_idx'); - } - $sqlQueries = $this->connection->migrateToSchema($schema->getWrappedSchema(), $dryRun); - if ($dryRun && $sqlQueries !== null) { - $output->writeln($sqlQueries); - } - $updated = true; - $output->writeln('<info>filecache_extended table updated successfully.</info>'); - } - } - - return $updated; - } } |