-- 修正認證系統架構
-- 方案 A: 保留 dt_users 的 username 和 display_name，都使用 API 回傳的 name (姓名+email)
-- 使用 email 作為主要唯一識別碼，sys_user 表專門記錄登入資訊
-- Created: 2025-10-01

-- 1. 確保 dt_users 表的 email 唯一約束
-- 先檢查是否有重複的 email，如果有則需要手動處理
-- 因為有外鍵約束，不能直接刪除
-- 先顯示重複的 email 記錄讓管理員確認
-- SELECT email, COUNT(*) as count FROM dt_users GROUP BY email HAVING COUNT(*) > 1;

-- 添加 email 唯一約束
ALTER TABLE dt_users
ADD CONSTRAINT uk_dt_users_email UNIQUE (email);

-- 2. 調整現有欄位註解，說明新的使用方式
ALTER TABLE dt_users
MODIFY COLUMN username VARCHAR(255) NOT NULL COMMENT 'API name (姓名+email格式)',
MODIFY COLUMN email VARCHAR(255) NOT NULL COMMENT '電子郵件 (主要識別鍵)';

-- 3. 保持 sys_user 表結構，但調整為專門記錄登入資訊
-- sys_user 表通過 email 與 dt_users 關聯
-- (保留現有的 sys_user 表，因為它是專門用於登入記錄)

-- 4. 重新命名 login_logs 為 dt_login_logs (配合專案命名規則)
RENAME TABLE login_logs TO dt_login_logs;

-- 5. 更新 dt_login_logs 表結構 (配合 dt_users 的主鍵)
ALTER TABLE dt_login_logs
ADD COLUMN user_id INT COMMENT '關聯到 dt_users.id',
ADD INDEX idx_user_id (user_id),
ADD FOREIGN KEY fk_dt_login_logs_user_id (user_id) REFERENCES dt_users(id) ON DELETE SET NULL;

-- 6. 建立使用者識別索引 (支援 email 和 username 快速查詢)
ALTER TABLE dt_users
ADD INDEX idx_username_email (username, email);