feat: replace Steam Workshop with clean rebuild (no adapters/controllers)

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/d9a824dc-5568-4604-a1e1-c72ccf240e13

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-05-05 12:18:35 +00:00 committed by GitHub
parent 16433fc77b
commit 59bd545ab3
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
82 changed files with 2066 additions and 14237 deletions

View file

@ -0,0 +1,89 @@
-- GSP Steam Workshop Manual SQL Reference
-- =========================================
-- Replace PREFIX_ with your actual table prefix (e.g. gsp_).
-- Compatible with MySQL 5.7 and MySQL 8.0.
-- Do NOT hardcode any database name here.
-- Run in the panel database.
-- ── Drop legacy tables (if upgrading from the old adapter-based implementation) ──
DROP TABLE IF EXISTS `PREFIX_workshop_game_profiles`;
DROP TABLE IF EXISTS `PREFIX_workshop_cache`;
DROP TABLE IF EXISTS `PREFIX_server_workshop_mods`;
DROP TABLE IF EXISTS `PREFIX_server_workshop_settings`;
-- ── Create new tables ─────────────────────────────────────────────────────
CREATE TABLE IF NOT EXISTS `PREFIX_steam_workshop_game_profiles` (
`id` INT NOT NULL AUTO_INCREMENT,
`config_name` VARCHAR(100) NOT NULL,
`game_name` VARCHAR(255) NOT NULL DEFAULT '',
`enabled` TINYINT(1) NOT NULL DEFAULT 0,
`steam_app_id` VARCHAR(32) NOT NULL DEFAULT '',
`workshop_app_id` VARCHAR(32) NOT NULL DEFAULT '',
`steam_login_required` TINYINT(1) NOT NULL DEFAULT 0,
`steamcmd_login_mode` ENUM('anonymous','account') NOT NULL DEFAULT 'anonymous',
`steamcmd_path` VARCHAR(512) NOT NULL DEFAULT '/home/gameserver/steamcmd/steamcmd.sh',
`workshop_download_dir_template` TEXT NULL,
`server_root_template` TEXT NULL,
`install_path_template` TEXT NULL,
`folder_naming_format` VARCHAR(64) NOT NULL DEFAULT '@{MOD_NAME}',
`mod_launch_param_template` VARCHAR(255) NOT NULL DEFAULT '-mod=',
`servermod_launch_param_template` VARCHAR(255) NOT NULL DEFAULT '-serverMod=',
`install_script_template` TEXT NULL,
`update_script_template` TEXT NULL,
`copy_bikeys_enabled` TINYINT(1) NOT NULL DEFAULT 1,
`notes` TEXT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_config_name` (`config_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `PREFIX_steam_workshop_server_mods` (
`id` INT NOT NULL AUTO_INCREMENT,
`home_id` INT NOT NULL,
`profile_id` INT NOT NULL,
`workshop_id` VARCHAR(64) NOT NULL,
`mod_name` VARCHAR(255) NOT NULL DEFAULT '',
`folder_name` VARCHAR(255) NOT NULL DEFAULT '',
`mod_type` ENUM('client','server') NOT NULL DEFAULT 'client',
`sort_order` INT NOT NULL DEFAULT 0,
`enabled` TINYINT(1) NOT NULL DEFAULT 1,
`install_status` VARCHAR(32) NOT NULL DEFAULT '',
`last_installed_at` DATETIME NULL,
`last_updated_at` DATETIME NULL,
`last_error` TEXT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `uniq_home_workshop` (`home_id`, `workshop_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- ── Example: DayZ profile ────────────────────────────────────────────────
-- After running the above, insert an example DayZ profile.
-- Adjust config_name to match your actual DayZ game_key from config_homes.
-- (Run `SELECT game_key, game_name FROM PREFIX_config_homes WHERE game_name LIKE '%DayZ%';`
-- to find the right config_name.)
--
-- INSERT INTO `PREFIX_steam_workshop_game_profiles`
-- (`config_name`, `game_name`, `enabled`,
-- `steam_app_id`, `workshop_app_id`,
-- `steamcmd_path`,
-- `workshop_download_dir_template`,
-- `server_root_template`,
-- `install_path_template`,
-- `folder_naming_format`,
-- `mod_launch_param_template`,
-- `servermod_launch_param_template`,
-- `copy_bikeys_enabled`)
-- VALUES
-- ('dayz_win64', 'DayZ', 1,
-- '223350', '221100',
-- '/home/gameserver/steamcmd/steamcmd.sh',
-- '{SERVER_ROOT}/steamapps/workshop/content/{WORKSHOP_APP_ID}',
-- '/home/gameserver/servers/{HOME_ID}',
-- '{SERVER_ROOT}/{MOD_FOLDER}',
-- '@{MOD_NAME}',
-- '-mod=',
-- '-serverMod=',
-- 1);