-- ============================================================
-- 样本中心改造：删除已移除模块相关的数据库表
-- 涉及模块：应用管理、统一认证平台（SSO服务端）
-- 执行前请备份数据库！
-- ============================================================
-- 说明：
--   本次改造移除了"应用管理"和"统一认证平台服务端"功能，
--   以下脚本用于清理对应的数据库表。
--   t_oauth_access_tokens / t_oauth_token_blacklist 仍被本地
--   JWT 认证（含SSO回调后的本地Token发放）使用，予以保留。
-- ============================================================

-- --------------------------------------------------------
-- 步骤1：解除 t_oauth_access_tokens 对 t_sys_app 的外键依赖
--        该表仍需保留用于本地认证，只需删除外键约束
-- --------------------------------------------------------
SET @fk_name = (
    SELECT CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
    WHERE TABLE_NAME = 't_oauth_access_tokens'
      AND COLUMN_NAME = 'app_id'
      AND REFERENCED_TABLE_NAME = 't_sys_app'
      AND TABLE_SCHEMA = DATABASE()
);
SET @sql = IF(@fk_name IS NOT NULL,
    CONCAT('ALTER TABLE t_oauth_access_tokens DROP FOREIGN KEY ', @fk_name),
    'SELECT 1'
);
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

-- --------------------------------------------------------
-- 步骤2：删除 OAuth 授权码表（统一认证平台服务端专用）
--        该表仅用于 OAuth2 授权码流程，现已无服务端授权需求
-- --------------------------------------------------------
DROP TABLE IF EXISTS t_oauth_authorization_codes;

-- --------------------------------------------------------
-- 步骤3：删除同步日志表（应用管理专用）
--        记录应用数据同步日志，随应用管理模块一并移除
-- --------------------------------------------------------
DROP TABLE IF EXISTS t_sys_sync_log;

-- --------------------------------------------------------
-- 步骤4：删除应用权限表（应用管理专用）
--        定义各应用的权限点，随应用管理模块一并移除
-- --------------------------------------------------------
DROP TABLE IF EXISTS t_sys_app_permission;

-- --------------------------------------------------------
-- 步骤5：删除应用表（应用管理模块核心表）
--        存储 OAuth2 客户端/应用注册信息，现已无应用管理需求
-- --------------------------------------------------------
DROP TABLE IF EXISTS t_sys_app;

-- ============================================================
-- 保留表说明（请勿删除）：
--   t_oauth_access_tokens    -- 本地JWT令牌存储（本地登录 + SSO回调后发放）
--   t_oauth_token_blacklist  -- 令牌黑名单（登出时使用）
--   t_sys_login_log          -- 登录日志（系统管理仍在使用）
--   t_sys_operation_log      -- 操作日志（系统管理仍在使用）
-- ============================================================
