Feature migrations up/down (#270)

* Migrations up down

* Add forum model

* Syntactic sugar for db structure changes

* Refactor migrations with $up & $down

* Fix migrations upgrade and downgrade

+ Add option to disable auto migrate

* Add migrate:to command

Usage: php aac migrate:to x (x - database version)

* Show error when mail is not enabled

* Fixes regarding to init.php

* Add migrate command to manually upgrade db, incase auto migrate is disabled

* Fixed rest of the migrations

* Limit max version of database

* Don't allow minus number

* Option to clear specified plugin settings by name

* Version is required

* Fix PHPStan errors

* Unset $up after migration, to prevent executing same migration twice

* Add database version to output

* This is not needed

* Update 5.php

* Set database_auto_migrate on install

* Set blank & color only if current db version supports it

* Fix duplicate function declaration
This commit is contained in:
Slawomir Boczek
2024-11-22 15:29:23 +01:00
committed by GitHub
parent 79636280a7
commit 3f6ff3a332
72 changed files with 1268 additions and 396 deletions

View File

@@ -14,23 +14,43 @@ class SettingsResetCommand extends Command
protected function configure(): void
{
$this->setName('settings:reset')
->setDescription('Removes all settings in database');
->setDescription('Removes settings in database')
->addArgument('name',
InputArgument::OPTIONAL,
'Name of the plugin'
);
}
protected function execute(InputInterface $input, OutputInterface $output): int
{
require SYSTEM . 'init.php';
$io = new SymfonyStyle($input, $output);
if (!$io->confirm('Are you sure you want to reset all settings in database?', false)) {
$name = $input->getArgument('name');
$all = !$name ? 'all' : $name;
if (!$io->confirm("Are you sure you want to reset {$all} settings in database?", false)) {
return Command::FAILURE;
}
SettingsModel::truncate();
if (!$name) {
SettingsModel::truncate();
}
else {
$settingsModel = SettingsModel::where('name', $name)->first();
if (!$settingsModel) {
$io->warning('No settings for this plugin saved in database');
return Command::SUCCESS;
}
SettingsModel::where('name', $name)->delete();
}
$settings = Settings::getInstance();
$settings->clearCache();
$io->success('Setting cleared successfully');
$io->success('Settings cleared successfully');
return Command::SUCCESS;
}
}