]> git.mxchange.org Git - friendica.git/blobdiff - src/Console/DatabaseStructure.php
doc/themes.md,FAQ-admin: point to live friendica-themes.com mirror
[friendica.git] / src / Console / DatabaseStructure.php
index 62c8136406c9510d8982d43e4ed594ce81d0ea21..a79e3a622dce9de67d76d14a7d76711611ab34bd 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 /**
- * @copyright Copyright (C) 2020, Friendica
+ * @copyright Copyright (C) 2010-2022, the Friendica project
  *
  * @license GNU AGPL version 3 or any later version
  *
@@ -21,7 +21,7 @@
 
 namespace Friendica\Console;
 
-use Friendica\Core\Config\Cache;
+use Friendica\Core\Config\ValueObject\Cache;
 use Friendica\Core\Update;
 use Friendica\Database\Database;
 use Friendica\Database\DBStructure;
@@ -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 to InnoDB
+    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()) {
@@ -98,14 +106,21 @@ HELP;
 
                switch ($this->getArgument(0)) {
                        case "dryrun":
-                               $output = DBStructure::update($basePath, true, false);
+                               $output = DBStructure::dryRun();
                                break;
                        case "update":
                                $force    = $this->getOption(['f', 'force'], false);
                                $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":
+                               DBStructure::writeStructure();
                                ob_start();
                                DBStructure::printStructure($basePath);
                                $output = ob_get_clean();
@@ -115,11 +130,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;
        }