diff options
author | Robin Appelman <robin@icewind.nl> | 2018-04-12 17:47:40 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2018-05-30 21:28:05 +0200 |
commit | b40629ac8caf5d488053a9ab2e89210bf14e1b4c (patch) | |
tree | e4a5c79218778a494250768832d55640939c65ec /lib | |
parent | 2dd49206c74eaa8e9149b117775f4747483ba5bd (diff) | |
download | nextcloud-server-b40629ac8caf5d488053a9ab2e89210bf14e1b4c.tar.gz nextcloud-server-b40629ac8caf5d488053a9ab2e89210bf14e1b4c.zip |
Add human readable description to migration steps
Signed-off-by: Robin Appelman <robin@icewind.nl>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/private/DB/MigrationService.php | 27 | ||||
-rw-r--r-- | lib/public/Migration/IMigrationStep.php | 15 | ||||
-rw-r--r-- | lib/public/Migration/SimpleMigrationStep.php | 17 |
3 files changed, 55 insertions, 4 deletions
diff --git a/lib/private/DB/MigrationService.php b/lib/private/DB/MigrationService.php index 77ac23fe5d2..cc2889dae0c 100644 --- a/lib/private/DB/MigrationService.php +++ b/lib/private/DB/MigrationService.php @@ -387,14 +387,36 @@ class MigrationService { } /** + * Get the human readable descriptions for the migration steps to run + * + * @param string $to + * @return string[] [$name => $description] + */ + public function describeMigrationStep($to = 'latest') { + $toBeExecuted = $this->getMigrationsToExecute($to); + $description = []; + foreach ($toBeExecuted as $version) { + $migration = $this->createInstance($version); + if ($migration->name()) { + $description[$migration->name()] = $migration->description(); + } + } + return $description; + } + + /** * @param string $version - * @return mixed + * @return IMigrationStep * @throws \InvalidArgumentException */ protected function createInstance($version) { $class = $this->getClass($version); try { $s = \OC::$server->query($class); + + if (!$s instanceof IMigrationStep) { + throw new \InvalidArgumentException('Not a valid migration'); + } } catch (QueryException $e) { if (class_exists($class)) { $s = new $class(); @@ -414,9 +436,6 @@ class MigrationService { */ public function executeStep($version) { $instance = $this->createInstance($version); - if (!$instance instanceof IMigrationStep) { - throw new \InvalidArgumentException('Not a valid migration'); - } $instance->preSchemaChange($this->output, function() { return new SchemaWrapper($this->connection); diff --git a/lib/public/Migration/IMigrationStep.php b/lib/public/Migration/IMigrationStep.php index e12d962683e..6b9da280d78 100644 --- a/lib/public/Migration/IMigrationStep.php +++ b/lib/public/Migration/IMigrationStep.php @@ -29,6 +29,21 @@ use OCP\DB\ISchemaWrapper; * @since 13.0.0 */ interface IMigrationStep { + /** + * Human readable name of the migration step + * + * @return string + * @since 14.0.0 + */ + public function name(): string; + + /** + * Human readable description of the migration steps + * + * @return string + * @since 14.0.0 + */ + public function description(): string; /** * @param IOutput $output diff --git a/lib/public/Migration/SimpleMigrationStep.php b/lib/public/Migration/SimpleMigrationStep.php index da46c687644..c515592bde9 100644 --- a/lib/public/Migration/SimpleMigrationStep.php +++ b/lib/public/Migration/SimpleMigrationStep.php @@ -29,6 +29,23 @@ use OCP\DB\ISchemaWrapper; * @since 13.0.0 */ abstract class SimpleMigrationStep implements IMigrationStep { + /** + * Human readable name of the migration step + * + * @return string + */ + public function name(): string { + return ''; + } + + /** + * Human readable description of the migration step + * + * @return string + */ + public function description(): string { + return ''; + } /** * @param IOutput $output |