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

@@ -1,18 +1,41 @@
<?php
/**
* @var OTS_DB_MySQL $db
*/
// 2024-01-27
// change hidden to hide (Eloquent model reserved keyword)
if (!$db->hasColumn('players', 'hide')) {
$db->exec("ALTER TABLE `players` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
}
$definition = 'TINYINT(1) NOT NULL DEFAULT 0';
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "changelog` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "faq` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "forum_boards` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "news` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "news_categories` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "pages` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "gallery` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$db->exec("ALTER TABLE `" . TABLE_PREFIX . "spells` CHANGE `hidden` `hide` TINYINT(1) NOT NULL DEFAULT 0;");
$up = function () use ($db, $definition) {
if (!$db->hasColumn('players', 'hide')) {
$db->changeColumn('players', 'hidden', 'hide', $definition);
}
$db->changeColumn(TABLE_PREFIX . 'changelog', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'faq', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'forum_boards', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'monsters', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'news', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'news_categories', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'pages', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'gallery', 'hidden', 'hide', $definition);
$db->changeColumn(TABLE_PREFIX . 'spells', 'hidden', 'hide', $definition);
};
$down = function () use ($db, $definition) {
if (!$db->hasColumn('players', 'hidden')) {
$db->changeColumn('players', 'hide', 'hidden', $definition);
}
$db->changeColumn(TABLE_PREFIX . 'changelog', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'faq', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'forum_boards', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'monsters', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'news', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'news_categories', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'pages', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'gallery', 'hide', 'hidden', $definition);
$db->changeColumn(TABLE_PREFIX . 'spells', 'hide', 'hidden', $definition);
};