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
{
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
Options
-h|--help|-? Show help information
-v Show more debug information.
+ -f|--force Force the command in case of "update" (Ignore failed updates/running updates)
HELP;
return $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);
+ $output = Update::run($a->getBasePath(), $force, true, false);
break;
case "dumpsql":
ob_start();
- DBStructure::printStructure();
+ DBStructure::printStructure($a->getBasePath());
$output = ob_get_clean();
break;
case "toinnodb":
DBStructure::convertToInnoDB();
$output = ob_get_clean();
break;
+ default:
+ $output = 'Unknown command: ' . $this->getArgument(0);
}
$this->out($output);