diff options
Diffstat (limited to 'apps/settings/lib/Controller/CheckSetupController.php')
-rw-r--r-- | apps/settings/lib/Controller/CheckSetupController.php | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/apps/settings/lib/Controller/CheckSetupController.php b/apps/settings/lib/Controller/CheckSetupController.php index 170c6a3870a..5d7989f0256 100644 --- a/apps/settings/lib/Controller/CheckSetupController.php +++ b/apps/settings/lib/Controller/CheckSetupController.php @@ -76,6 +76,7 @@ use OCP\AppFramework\Http\DataResponse; use OCP\AppFramework\Http\RedirectResponse; use OCP\DB\Events\AddMissingColumnsEvent; use OCP\DB\Events\AddMissingIndicesEvent; +use OCP\DB\Events\AddMissingPrimaryKeyEvent; use OCP\DB\Types; use OCP\EventDispatcher\IEventDispatcher; use OCP\Http\Client\IClientService; @@ -580,6 +581,22 @@ Raw output $event = new GenericEvent($info); $this->dispatcher->dispatch(IDBConnection::CHECK_MISSING_PRIMARY_KEYS_EVENT, $event); + $event = new AddMissingPrimaryKeyEvent(); + $this->eventDispatcher->dispatchTyped($event); + $missingKeys = $event->getMissingPrimaryKeys(); + + if (!empty($missingKeys)) { + $schema = new SchemaWrapper(\OCP\Server::get(Connection::class)); + foreach ($missingKeys as $missingKey) { + if ($schema->hasTable($missingKey['tableName'])) { + $table = $schema->getTable($missingKey['tableName']); + if (!$table->hasPrimaryKey()) { + $info->addHintForMissingSubject($missingKey['tableName']); + } + } + } + } + return $info->getListOfMissingPrimaryKeys(); } |