namespace Friendica\Core\Console;
use Friendica\Core;
+use Friendica\Core\Update;
use Friendica\Database\DBA;
use Friendica\Database\DBStructure;
use RuntimeException;
-require_once 'boot.php';
-require_once 'include/dba.php';
-
/**
* @brief Performs database updates from the command line
*
$help = <<<HELP
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;
}
protected function doExecute()
{
- $a = get_app();
-
if ($this->getOption('v')) {
$this->out('Class: ' . __CLASS__);
$this->out('Arguments: ' . var_export($this->args, true));
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":
- $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 the pre_update_nnnn functions in update.php
- for ($x = $stored; $x < $current; $x ++) {
- $r = run_update_function($x, 'pre_update');
- if (!$r) {
- break;
- }
- }
-
- $output = DBStructure::update(true, true);
-
- // run the update_nnnn functions in update.php
- for ($x = $stored; $x < $current; $x ++) {
- $r = run_update_function($x, 'update');
- 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);