]> git.mxchange.org Git - friendica.git/blobdiff - src/Console/DatabaseStructure.php
Merge remote-tracking branch 'upstream/develop' into item-view
[friendica.git] / src / Console / DatabaseStructure.php
index 6b1fa8d4d6fecaad35db3b445e00ddec0735820d..343c90023d8bfad831f6bd3f6cac074c18a3da3e 100644 (file)
@@ -48,19 +48,25 @@ class DatabaseStructure extends \Asika\SimpleConsole\Console
                $help = <<<HELP
 console dbstructure - Performs database updates
 Usage
-       bin/console dbstructure <command> [-h|--help|-?] |-f|--force] [-v]
+       bin/console dbstructure <command> [options]
 
 Commands
-       dryrun   Show database update schema queries without running them
-       update   Update database schema
-       dumpsql  Dump database schema
-       toinnodb Convert all tables from MyISAM or InnoDB in the Antelope file format to InnoDB in the Barracuda file format
+    drop     Show tables that aren't in use by Friendica anymore and can be dropped
+       -e|--execute    Execute the dropping
 
-Options
+    update   Update database schema
+       -f|--force      Force the update command (Even if the database structure matches)
+       -o|--override   Override running or stalling updates
+
+    dryrun   Show database update schema queries without running them
+    dumpsql  Dump database schema
+    toinnodb Convert all tables from MyISAM or InnoDB in the Antelope file format to InnoDB in the Barracuda file format
+    initial  Set needed initial values in the tables
+    version  Set the database to a given number
+
+General Options
     -h|--help|-?       Show help information
     -v                 Show more debug information.
-    -f|--force         Force the update command (Even if the database structure matches)
-    -o|--override      Override running or stalling updates
 HELP;
                return $help;
        }
@@ -86,8 +92,10 @@ HELP;
                        return 0;
                }
 
-               if (count($this->args) > 1) {
+               if ((count($this->args) > 1) && ($this->getArgument(0) != 'version')) {
                        throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');
+               } elseif ((count($this->args) != 2) && ($this->getArgument(0) == 'version')) {
+                       throw new \Asika\SimpleConsole\CommandArgsException('This command needs two arguments');
                }
 
                if (!$this->dba->isConnected()) {
@@ -105,6 +113,12 @@ HELP;
                                $override = $this->getOption(['o', 'override'], false);
                                $output = Update::run($basePath, $force, $override,true, false);
                                break;
+                       case "drop":
+                               $execute = $this->getOption(['e', 'execute'], false);
+                               ob_start();
+                               DBStructure::dropTables($execute);
+                               $output = ob_get_clean();
+                               break;
                        case "dumpsql":
                                ob_start();
                                DBStructure::printStructure($basePath);
@@ -115,11 +129,21 @@ HELP;
                                DBStructure::convertToInnoDB();
                                $output = ob_get_clean();
                                break;
+                       case "version":
+                               ob_start();
+                               DBStructure::setDatabaseVersion($this->getArgument(1));
+                               $output = ob_get_clean();
+                               break;
+                       case "initial":
+                               ob_start();
+                               DBStructure::checkInitialValues(true);
+                               $output = ob_get_clean();
+                               break;
                        default:
                                $output = 'Unknown command: ' . $this->getArgument(0);
                }
 
-               $this->out($output);
+               $this->out(trim($output));
 
                return 0;
        }