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,39 @@
<?php
/**
* @var OTS_DB_MySQL $db
*/
// change monsters.file_path field to loot
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'file_path')) {
$db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `file_path` `loot` VARCHAR(5000);");
}
$up = function () use ($db) {
// change monsters.file_path field to loot
if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'file_path')) {
$db->changeColumn(TABLE_PREFIX . 'monsters', 'file_path', 'loot', 'VARCHAR(5000)');
}
// update loot to empty string
$db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `loot` = '';");
// update loot to empty string
$db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `loot` = '';");
// drop monsters.gfx_name field
$db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` DROP COLUMN `gfx_name`;");
// drop monsters.gfx_name field
$db->dropColumn(TABLE_PREFIX . 'monsters', 'gfx_name');
// rename hide_creature to hidden
if($db->hasColumn(TABLE_PREFIX . 'monsters', 'hide_creature')) {
$db->query("ALTER TABLE `" . TABLE_PREFIX . "monsters` CHANGE `hide_creature` `hidden` TINYINT(1) NOT NULL DEFAULT 0;");
}
?>
// rename hide_creature to hidden
if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'hide_creature')) {
$db->changeColumn(TABLE_PREFIX . 'monsters', 'hide_creature', 'hidden', "TINYINT(1) NOT NULL DEFAULT 0");
}
};
$down = function () use ($db) {
if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'loot')) {
$db->changeColumn(TABLE_PREFIX . 'monsters', 'loot', 'file_path', 'VARCHAR(5000)');
}
// update file_path to empty string
$db->query("UPDATE `" . TABLE_PREFIX . "monsters` SET `file_path` = '';");
// add monsters.gfx_name field
$db->addColumn(TABLE_PREFIX . 'monsters', 'gfx_name', 'varchar(255) NOT NULL AFTER `race`');
// rename hidden to hide_creature
if ($db->hasColumn(TABLE_PREFIX . 'monsters', 'hidden')) {
$db->changeColumn(TABLE_PREFIX . 'monsters', 'hidden', 'hide_creature', 'TINYINT(1) NOT NULL DEFAULT 0');
}
};