-- v2.4 Entra ID SSO 登录（issue #334）
-- 仅 enum 增量 + 一次性 email 大小写归一化 backfill
-- 详细决策见 docs/modules/organization/06-data-model.md §「本期 schema 增量声明」

-- ---------------------------------------------------------------------------
-- 1. AuditAction enum 新增 5 个值
--
-- 历史警告：PostgreSQL 11 及更早，ALTER TYPE ... ADD VALUE 不能跑在事务里，
-- 也不允许一个 migration 里 ADD 多个值（详见下方 Prisma 自动生成的提示）。
-- 本项目要求 PostgreSQL >= 12（runtime + CI / dev 容器均为 16-alpine），
-- ADD VALUE 在事务内允许，且同 migration 多次 ADD 也允许；本文件**不在同
-- 一 transaction 内使用新 enum 值**（仅 DDL，写入由后续 backend 启动后的
-- 业务流程触发），运行时安全。
-- ---------------------------------------------------------------------------

-- AlterEnum
-- This migration adds more than one value to an enum.
-- With PostgreSQL versions 11 and earlier, this is not possible
-- in a single migration. This can be worked around by creating
-- multiple migrations, each migration adding only one value to
-- the enum.
ALTER TYPE "platform_audit"."AuditAction" ADD VALUE 'SSO_LOGIN_SUCCESS';
ALTER TYPE "platform_audit"."AuditAction" ADD VALUE 'SSO_JIT_CREATED';
ALTER TYPE "platform_audit"."AuditAction" ADD VALUE 'SSO_BINDING_FILLED';
ALTER TYPE "platform_audit"."AuditAction" ADD VALUE 'SSO_BINDING_UPGRADED_FROM_LDAP';
ALTER TYPE "platform_audit"."AuditAction" ADD VALUE 'SSO_BINDING_CONFLICT';

-- ---------------------------------------------------------------------------
-- 2. 一次性 email 大小写归一化 backfill（幂等）
--
-- 配合应用层 lower-case 写入，向后不再产生大小写漂移。
-- 再跑一次 WHERE 0 行，无副作用。
-- ---------------------------------------------------------------------------
UPDATE "platform_iam"."users"
SET "email" = LOWER("email")
WHERE "email" != LOWER("email");
