Ability to set the database version

This commit is contained in:
Michael 2020-09-13 15:57:24 +00:00
parent cb647b5b6c
commit 50b5483ee1
3 changed files with 27 additions and 2 deletions

View file

@ -55,6 +55,7 @@ Commands
update Update database schema update Update database schema
dumpsql Dump 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 toinnodb Convert all tables from MyISAM or InnoDB in the Antelope file format to InnoDB in the Barracuda file format
version Set the database to a given number
Options Options
-h|--help|-? Show help information -h|--help|-? Show help information
@ -86,8 +87,10 @@ HELP;
return 0; return 0;
} }
if (count($this->args) > 1) { if ((count($this->args) > 1) && ($this->getArgument(0) != 'version')) {
throw new \Asika\SimpleConsole\CommandArgsException('Too many arguments'); 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()) { if (!$this->dba->isConnected()) {
@ -115,6 +118,12 @@ HELP;
DBStructure::convertToInnoDB(); DBStructure::convertToInnoDB();
$output = ob_get_clean(); $output = ob_get_clean();
break; break;
case "version":
ob_start();
DBStructure::setDatabaseVersion($this->getArgument(1));
$output = ob_get_clean();
break;
default: default:
$output = 'Unknown command: ' . $this->getArgument(0); $output = 'Unknown command: ' . $this->getArgument(0);
} }

View file

@ -48,6 +48,22 @@ class DBStructure
*/ */
private static $definition = []; private static $definition = [];
/**
* Set a database version to trigger update functions
*
* @param string $version
* @return void
*/
public static function setDatabaseVersion(string $version)
{
if (!is_numeric($version)) {
throw new \Asika\SimpleConsole\CommandArgsException('The version number must be numeric');
}
DI::config()->set('system', 'build', $version);
echo DI::l10n()->t('The database version had been set to %s.', $version);
}
/** /**
* Converts all tables from MyISAM/InnoDB Antelope to InnoDB Barracuda * Converts all tables from MyISAM/InnoDB Antelope to InnoDB Barracuda
*/ */

View file

@ -95,7 +95,7 @@ class Friendica extends BaseModule
'about' => DI::l10n()->t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.', 'about' => DI::l10n()->t('This is Friendica, version %s that is running at the web location %s. The database version is %s, the post update version is %s.',
'<strong>' . FRIENDICA_VERSION . '</strong>', '<strong>' . FRIENDICA_VERSION . '</strong>',
DI::baseUrl()->get(), DI::baseUrl()->get(),
'<strong>' . DB_UPDATE_VERSION . '</strong>', '<strong>' . DB_UPDATE_VERSION . '/' . $config->get('system', 'build') .'</strong>',
'<strong>' . $config->get('system', 'post_update_version') . '</strong>'), '<strong>' . $config->get('system', 'post_update_version') . '</strong>'),
'friendica' => DI::l10n()->t('Please visit <a href="https://friendi.ca">Friendi.ca</a> to learn more about the Friendica project.'), 'friendica' => DI::l10n()->t('Please visit <a href="https://friendi.ca">Friendi.ca</a> to learn more about the Friendica project.'),
'bugs' => DI::l10n()->t('Bug reports and issues: please visit') . ' ' . '<a href="https://github.com/friendica/friendica/issues?state=open">' . DI::l10n()->t('the bugtracker at github') . '</a>', 'bugs' => DI::l10n()->t('Bug reports and issues: please visit') . ' ' . '<a href="https://github.com/friendica/friendica/issues?state=open">' . DI::l10n()->t('the bugtracker at github') . '</a>',