-- 迁移文件: 010_add_auth_fields_to_users.sql
-- 描述: 为用户表添加认证相关字段
-- 需求: 1.1, 1.2, 1.3

-- ============================================
-- 正向迁移: 添加认证字段和约束
-- ============================================

-- 添加username字段（用户名，用于登录）
ALTER TABLE aigcspace.users ADD COLUMN IF NOT EXISTS username VARCHAR(50);

-- 添加password_hash字段（密码哈希）
ALTER TABLE aigcspace.users ADD COLUMN IF NOT EXISTS password_hash VARCHAR(255);

-- 为username添加唯一约束
ALTER TABLE aigcspace.users ADD CONSTRAINT uk_users_username UNIQUE (username);

-- 为email添加唯一约束（当email不为空时）
CREATE UNIQUE INDEX IF NOT EXISTS idx_users_email_unique ON aigcspace.users(email) WHERE email IS NOT NULL;

-- 添加字段注释
COMMENT ON COLUMN aigcspace.users.username IS '用户名（唯一，用于登录）';
COMMENT ON COLUMN aigcspace.users.password_hash IS '密码哈希（bcrypt加密）';

-- ============================================
-- 回滚迁移: 删除字段和约束
-- ============================================
-- DROP INDEX IF EXISTS aigcspace.idx_users_email_unique;
-- ALTER TABLE aigcspace.users DROP CONSTRAINT IF EXISTS uk_users_username;
-- ALTER TABLE aigcspace.users DROP COLUMN IF EXISTS password_hash;
-- ALTER TABLE aigcspace.users DROP COLUMN IF EXISTS username;
