]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Console/DatabaseStructure.php
And moving the block back to the old place
[friendica.git] / src / Core / Console / DatabaseStructure.php
index eb4c6df99837dcf4bac1ded841b8b82ba179007f..dededa9b3a4321e09fcd3ea31ea6d07c6f026b07 100644 (file)
@@ -3,15 +3,15 @@
 namespace Friendica\Core\Console;
 
 use Friendica\Core;
+use Friendica\Core\Update;
+use Friendica\Database\DBA;
 use Friendica\Database\DBStructure;
-
-require_once 'boot.php';
-require_once 'include/dba.php';
+use RuntimeException;
 
 /**
- * @brief Does database updates from the command line
+ * @brief Performs database updates from the command line
  *
- * @author Hypolite Petovan <mrpetovan@gmail.com>
+ * @author Hypolite Petovan <hypolite@mrpetovan.com>
  */
 class DatabaseStructure extends \Asika\SimpleConsole\Console
 {
@@ -20,9 +20,9 @@ class DatabaseStructure extends \Asika\SimpleConsole\Console
        protected function getHelp()
        {
                $help = <<<HELP
-console dbstructure - Does database updates
+console dbstructure - Performs database updates
 Usage
-       bin/console dbstructure <command> [-h|--help|-?] [-v]
+       bin/console dbstructure <command> [-h|--help|-?] |-f|--force] [-v]
 
 Commands
        dryrun   Show database update schema queries without running them
@@ -31,16 +31,16 @@ Commands
        toinnodb Convert all tables from MyISAM to InnoDB
 
 Options
-    -h|--help|-? Show help information
-    -v           Show more debug information.
+    -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;
        }
 
        protected function doExecute()
        {
-               $a = get_app();
-
                if ($this->getOption('v')) {
                        $this->out('Class: ' . __CLASS__);
                        $this->out('Arguments: ' . var_export($this->args, true));
@@ -56,45 +56,26 @@ HELP;
                        throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments');
                }
 
-               require_once '.htconfig.php';
-               $result = \dba::connect($db_host, $db_user, $db_pass, $db_data);
-               unset($db_host, $db_user, $db_pass, $db_data);
-
-               if (!$result) {
-                       throw new \RuntimeException('Unable to connect to database');
+               if (!DBA::connected()) {
+                       throw new RuntimeException('Unable to connect to database');
                }
 
                Core\Config::load();
 
+               $a = get_app();
+
                switch ($this->getArgument(0)) {
                        case "dryrun":
-                               $output = DBStructure::update(true, false);
+                               $output = DBStructure::update($a->getBasePath(), true, false);
                                break;
                        case "update":
-                               $output = DBStructure::update(true, true);
-
-                               $build = Core\Config::get('system', 'build');
-                               if (empty($build)) {
-                                       Core\Config::set('system', 'build', DB_UPDATE_VERSION);
-                                       $build = DB_UPDATE_VERSION;
-                               }
-
-                               $stored = intval($build);
-                               $current = intval(DB_UPDATE_VERSION);
-
-                               // run any left update_nnnn functions in update.php
-                               for ($x = $stored; $x < $current; $x ++) {
-                                       $r = run_update_function($x);
-                                       if (!$r) {
-                                               break;
-                                       }
-                               }
-
-                               Core\Config::set('system', 'build', DB_UPDATE_VERSION);
+                               $force    = $this->getOption(['f', 'force'], false);
+                               $override = $this->getOption(['o', 'override'], false);
+                               $output = Update::run($a->getBasePath(), $force, $override,true, false);
                                break;
                        case "dumpsql":
                                ob_start();
-                               DBStructure::printStructure();
+                               DBStructure::printStructure($a->getBasePath());
                                $output = ob_get_clean();
                                break;
                        case "toinnodb":
@@ -102,11 +83,12 @@ HELP;
                                DBStructure::convertToInnoDB();
                                $output = ob_get_clean();
                                break;
+                       default:
+                               $output = 'Unknown command: ' . $this->getArgument(0);
                }
 
                $this->out($output);
 
                return 0;
        }
-
 }