From 503d2f63c3207940d8da52a4ac05aaebb4cc4115 Mon Sep 17 00:00:00 2001 From: Dawid Bepierszcz <41084667+daffyyyy@users.noreply.github.com> Date: Fri, 17 Oct 2025 01:50:22 +0200 Subject: [PATCH] Fixed migrations --- .../Migrations/Mysql/001_CreateTables.sql | 51 +++++++++++++++++++ .../Migrations/Mysql/002_CreateFlagsTable.sql | 9 ++++ .../Mysql/003_ChangeColumnsPosition.sql | 4 ++ .../Mysql/004_MoveOldFlagsToFlagsTable.sql | 36 +++++++++++++ .../Mysql/005_CreateUnbansTable.sql | 29 +++++++++++ .../Mysql/006_ServerGroupsFeature.sql | 25 +++++++++ .../Mysql/007_ServerGroupsGlobal.sql | 1 + .../Mysql/008_OnlineTimeInPenalties.sql | 1 + .../Mysql/009_BanAllUsedIpAddress.sql | 8 +++ .../Migrations/Mysql/010_CreateWarnsTable.sql | 14 +++++ .../Mysql/011_AddRconColumnToServersTable.sql | 1 + .../012_AddUpdatedAtColumnToSaBansTable.sql | 1 + .../013_AddNameColumnToSaPlayerIpsTable.sql | 13 +++++ .../Mysql/014_AddIndexesToMutesTable.sql | 3 ++ .../Migrations/Mysql/015_steamidToBigInt.sql | 23 +++++++++ 15 files changed, 219 insertions(+) create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/001_CreateTables.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/002_CreateFlagsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/003_ChangeColumnsPosition.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/004_MoveOldFlagsToFlagsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/006_ServerGroupsFeature.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/007_ServerGroupsGlobal.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/008_OnlineTimeInPenalties.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/009_BanAllUsedIpAddress.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/010_CreateWarnsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/011_AddRconColumnToServersTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/012_AddUpdatedAtColumnToSaBansTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql create mode 100644 CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/001_CreateTables.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/001_CreateTables.sql new file mode 100644 index 0000000..26155c2 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/001_CreateTables.sql @@ -0,0 +1,51 @@ +CREATE TABLE IF NOT EXISTS `sa_bans` ( + `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, + `player_name` VARCHAR(128), + `player_steamid` VARCHAR(64), + `player_ip` VARCHAR(128), + `admin_steamid` VARCHAR(64) NOT NULL, + `admin_name` VARCHAR(128) NOT NULL, + `reason` VARCHAR(255) NOT NULL, + `duration` INT NOT NULL, + `ends` TIMESTAMP NULL, + `created` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + `server_id` INT NULL, + `status` ENUM('ACTIVE', 'UNBANNED', 'EXPIRED', '') NOT NULL DEFAULT 'ACTIVE' + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `sa_mutes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `player_name` varchar(128) NULL, + `player_steamid` varchar(64) NOT NULL, + `admin_steamid` varchar(64) NOT NULL, + `admin_name` varchar(128) NOT NULL, + `reason` varchar(255) NOT NULL, + `duration` int(11) NOT NULL, + `ends` timestamp NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `type` enum('GAG','MUTE','SILENCE','') NOT NULL DEFAULT 'GAG', + `server_id` INT NULL, + `status` enum('ACTIVE','UNMUTED','EXPIRED','') NOT NULL DEFAULT 'ACTIVE', + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `sa_admins` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `player_name` varchar(128) NOT NULL, + `player_steamid` varchar(64) NOT NULL, + `flags` TEXT NULL, + `immunity` int(11) NOT NULL DEFAULT 0, + `server_id` INT NULL, + + `ends` timestamp NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `sa_servers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `hostname` varchar(128) NOT NULL, + `address` varchar(64) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `address` (`address`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/002_CreateFlagsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/002_CreateFlagsTable.sql new file mode 100644 index 0000000..3c9b75b --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/002_CreateFlagsTable.sql @@ -0,0 +1,9 @@ +CREATE TABLE IF NOT EXISTS `sa_admins_flags` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `admin_id` int(11) NOT NULL, + `flag` varchar(64) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (`admin_id`) REFERENCES `sa_admins` (`id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +ALTER TABLE `sa_admins` CHANGE `flags` `flags` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/003_ChangeColumnsPosition.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/003_ChangeColumnsPosition.sql new file mode 100644 index 0000000..d25915a --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/003_ChangeColumnsPosition.sql @@ -0,0 +1,4 @@ +ALTER TABLE `sa_bans` CHANGE `player_name` `player_name` VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER `id`; +ALTER TABLE `sa_mutes` CHANGE `player_name` `player_name` VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER `id`; +ALTER TABLE `sa_admins` CHANGE `player_name` `player_name` VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER `id`; +ALTER TABLE `sa_servers` CHANGE `hostname` `hostname` VARCHAR(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL AFTER `id`; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/004_MoveOldFlagsToFlagsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/004_MoveOldFlagsToFlagsTable.sql new file mode 100644 index 0000000..71ca42b --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/004_MoveOldFlagsToFlagsTable.sql @@ -0,0 +1,36 @@ +INSERT INTO sa_admins_flags (admin_id, flag) +SELECT + min_admins.admin_id, + TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(sa_admins.flags, ',', numbers.n), ',', -1)) AS flag +FROM ( + SELECT MIN(id) AS admin_id, player_steamid, server_id + FROM sa_admins + WHERE player_steamid != 'Console' + GROUP BY player_steamid, server_id +) AS min_admins +JOIN sa_admins ON min_admins.player_steamid = sa_admins.player_steamid +JOIN ( + SELECT 1 AS n UNION ALL + SELECT 2 UNION ALL + SELECT 3 UNION ALL + SELECT 4 UNION ALL + SELECT 5 UNION ALL + SELECT 6 UNION ALL + SELECT 7 UNION ALL + SELECT 8 UNION ALL + SELECT 9 UNION ALL + SELECT 10 UNION ALL + SELECT 11 UNION ALL + SELECT 12 UNION ALL + SELECT 13 UNION ALL + SELECT 14 UNION ALL + SELECT 15 UNION ALL + SELECT 16 UNION ALL + SELECT 17 UNION ALL + SELECT 18 UNION ALL + SELECT 19 UNION ALL + SELECT 20 +) AS numbers +ON CHAR_LENGTH(sa_admins.flags) - CHAR_LENGTH(REPLACE(sa_admins.flags, ',', '')) >= numbers.n - 1 +AND (min_admins.server_id = sa_admins.server_id OR (min_admins.server_id IS NULL AND sa_admins.server_id IS NULL)) +WHERE sa_admins.id IS NOT NULL; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql new file mode 100644 index 0000000..7000cd5 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/005_CreateUnbansTable.sql @@ -0,0 +1,29 @@ +CREATE TABLE IF NOT EXISTS `sa_unbans` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `ban_id` int(11) NOT NULL, + `admin_id` int(11) NOT NULL DEFAULT 0, + `reason` varchar(255) NOT NULL DEFAULT 'Unknown', + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `sa_unmutes` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `mute_id` int(11) NOT NULL, + `admin_id` int(11) NOT NULL DEFAULT 0, + `reason` varchar(255) NOT NULL DEFAULT 'Unknown', + `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +INSERT IGNORE INTO `sa_admins` (`id`, `player_name`, `player_steamid`, `flags`, `immunity`, `server_id`, `ends`, `created`) +VALUES (0, 'Console', 'Console', '', '0', NULL, NULL, NOW()); + +UPDATE `sa_admins` SET `id` = 0 WHERE `id` = -1; + +ALTER TABLE `sa_bans` ADD `unban_id` INT NULL AFTER `server_id`; +ALTER TABLE `sa_mutes` ADD `unmute_id` INT NULL AFTER `server_id`; +ALTER TABLE `sa_bans` ADD FOREIGN KEY (`unban_id`) REFERENCES `sa_unbans`(`id`) ON DELETE CASCADE; +ALTER TABLE `sa_mutes` ADD FOREIGN KEY (`unmute_id`) REFERENCES `sa_unmutes`(`id`) ON DELETE CASCADE; +ALTER TABLE `sa_unbans` ADD FOREIGN KEY (`admin_id`) REFERENCES `sa_admins`(`id`) ON DELETE CASCADE; +ALTER TABLE `sa_unmutes` ADD FOREIGN KEY (`admin_id`) REFERENCES `sa_admins`(`id`) ON DELETE CASCADE; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/006_ServerGroupsFeature.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/006_ServerGroupsFeature.sql new file mode 100644 index 0000000..4256cec --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/006_ServerGroupsFeature.sql @@ -0,0 +1,25 @@ +CREATE TABLE IF NOT EXISTS `sa_groups` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `name` varchar(255) NOT NULL, + `immunity` int(11) NOT NULL DEFAULT 0, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `sa_groups_flags` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `group_id` int(11) NOT NULL, + `flag` varchar(64) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +CREATE TABLE IF NOT EXISTS `sa_groups_servers` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `group_id` int(11) NOT NULL, + `server_id` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +ALTER TABLE `sa_admins` ADD `group_id` INT NULL AFTER `created`; +ALTER TABLE `sa_groups_flags` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE CASCADE; +ALTER TABLE `sa_groups_servers` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE CASCADE; +ALTER TABLE `sa_admins` ADD FOREIGN KEY (`group_id`) REFERENCES `sa_groups`(`id`) ON DELETE SET NULL; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/007_ServerGroupsGlobal.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/007_ServerGroupsGlobal.sql new file mode 100644 index 0000000..34d1945 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/007_ServerGroupsGlobal.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_groups_servers` CHANGE `server_id` `server_id` INT(11) NULL; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/008_OnlineTimeInPenalties.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/008_OnlineTimeInPenalties.sql new file mode 100644 index 0000000..d22934f --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/008_OnlineTimeInPenalties.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_mutes` ADD `passed` INT NULL AFTER `duration`; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/009_BanAllUsedIpAddress.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/009_BanAllUsedIpAddress.sql new file mode 100644 index 0000000..2fa6688 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/009_BanAllUsedIpAddress.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS `sa_players_ips` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `steamid` bigint(20) NOT NULL, + `address` varchar(64) NOT NULL, + `used_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (`id`), + UNIQUE KEY `steamid` (`steamid`,`address`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/010_CreateWarnsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/010_CreateWarnsTable.sql new file mode 100644 index 0000000..af4d509 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/010_CreateWarnsTable.sql @@ -0,0 +1,14 @@ +CREATE TABLE IF NOT EXISTS `sa_warns` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `player_name` varchar(128) DEFAULT NULL, + `player_steamid` varchar(64) NOT NULL, + `admin_steamid` varchar(64) NOT NULL, + `admin_name` varchar(128) NOT NULL, + `reason` varchar(255) NOT NULL, + `duration` int(11) NOT NULL, + `ends` timestamp NOT NULL, + `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `server_id` int(11) DEFAULT NULL, + `status` enum('ACTIVE','EXPIRED','') NOT NULL DEFAULT 'ACTIVE', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/011_AddRconColumnToServersTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/011_AddRconColumnToServersTable.sql new file mode 100644 index 0000000..9ab3c4a --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/011_AddRconColumnToServersTable.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_servers` ADD `rcon_password` varchar(128) NULL AFTER `hostname`; diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/012_AddUpdatedAtColumnToSaBansTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/012_AddUpdatedAtColumnToSaBansTable.sql new file mode 100644 index 0000000..bc306e6 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/012_AddUpdatedAtColumnToSaBansTable.sql @@ -0,0 +1 @@ +ALTER TABLE `sa_bans` ADD COLUMN `updated_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP AFTER `status`; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql new file mode 100644 index 0000000..8305e3a --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/013_AddNameColumnToSaPlayerIpsTable.sql @@ -0,0 +1,13 @@ +DELETE FROM `sa_players_ips` +WHERE `id` NOT IN ( + SELECT * FROM ( + SELECT MIN(`id`) + FROM `sa_players_ips` + GROUP BY `steamid` + ) AS `keep_ids` +); +DELETE FROM sa_players_ips WHERE INET_ATON(address) IS NULL AND address IS NOT NULL; +UPDATE `sa_players_ips` SET `address` = INET_ATON(address); +ALTER TABLE `sa_players_ips` CHANGE `address` `address` INT UNSIGNED NOT NULL; +ALTER TABLE `sa_players_ips` ADD INDEX (used_at DESC); +ALTER TABLE `sa_players_ips` ADD `name` VARCHAR(64) NULL DEFAULT NULL AFTER `steamid`; \ No newline at end of file diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql new file mode 100644 index 0000000..d105b5f --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/014_AddIndexesToMutesTable.sql @@ -0,0 +1,3 @@ +ALTER TABLE sa_mutes ADD INDEX (player_steamid, status, ends); +ALTER TABLE sa_mutes ADD INDEX(player_steamid, status, server_id, duration); +ALTER TABLE sa_mutes ADD INDEX(player_steamid, type); diff --git a/CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql b/CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql new file mode 100644 index 0000000..179cc67 --- /dev/null +++ b/CS2-SimpleAdmin/Database/Migrations/Mysql/015_steamidToBigInt.sql @@ -0,0 +1,23 @@ +ALTER TABLE `sa_bans` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +UPDATE `sa_bans` +SET admin_steamid = '0' +WHERE admin_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_bans` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; + +ALTER TABLE `sa_mutes` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +UPDATE `sa_mutes` +SET admin_steamid = '0' +WHERE admin_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_mutes` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; + +ALTER TABLE `sa_warns` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +UPDATE `sa_warns` +SET admin_steamid = '0' +WHERE admin_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_warns` CHANGE `admin_steamid` `admin_steamid` BIGINT NOT NULL; + +UPDATE `sa_admins` +SET player_steamid = '0' +WHERE player_steamid NOT REGEXP '^[0-9]+$'; +ALTER TABLE `sa_admins` CHANGE `player_steamid` `player_steamid` BIGINT NULL DEFAULT NULL; +