-- 迁移：申请审核流程增强
-- 1. users 表增加 rejection_count 字段（累计被拒绝次数）
-- 2. user_applications.status 增加 'cancelled' 值（用户主动取消）
-- 日期：2026-03-23

-- 1. 增加 rejection_count 字段（默认 0）
ALTER TABLE auth.users
  ADD COLUMN IF NOT EXISTS rejection_count integer NOT NULL DEFAULT 0;

COMMENT ON COLUMN auth.users.rejection_count
  IS '累计被管理员拒绝的申请次数，达到 3 次自动禁用账号';

-- 2. user_applications.status 检查约束更新（增加 cancelled）
-- 先删除旧约束（如果存在），再添加新约束
DO $$
BEGIN
  -- 尝试删除旧的 CHECK 约束
  IF EXISTS (
    SELECT 1 FROM information_schema.table_constraints
     WHERE table_schema = 'auth'
       AND table_name = 'user_applications'
       AND constraint_type = 'CHECK'
       AND constraint_name = 'user_applications_status_check'
  ) THEN
    ALTER TABLE auth.user_applications
      DROP CONSTRAINT user_applications_status_check;
  END IF;
END $$;

ALTER TABLE auth.user_applications
  ADD CONSTRAINT user_applications_status_check
  CHECK (status IN ('pending', 'approved', 'rejected', 'cancelled'));

-- 回滚 SQL（备用）：
-- ALTER TABLE auth.users DROP COLUMN IF EXISTS rejection_count;
-- ALTER TABLE auth.user_applications DROP CONSTRAINT IF EXISTS user_applications_status_check;
-- ALTER TABLE auth.user_applications ADD CONSTRAINT user_applications_status_check CHECK (status IN ('pending', 'approved', 'rejected'));
