From f56ee1fdcf18a08a735c66f14ea43a8974d979f2 Mon Sep 17 00:00:00 2001 From: Wira Irawan Date: Mon, 11 May 2026 13:02:45 +0700 Subject: [PATCH] Fix user status enum bootstrap migration --- .../0006_user_invites/migration.sql | 30 +++++++++++++++---- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/prisma/migrations/0006_user_invites/migration.sql b/prisma/migrations/0006_user_invites/migration.sql index 9dce977..0450bca 100644 --- a/prisma/migrations/0006_user_invites/migration.sql +++ b/prisma/migrations/0006_user_invites/migration.sql @@ -1,5 +1,30 @@ +DO $$ +BEGIN + CREATE TYPE "UserStatus" AS ENUM ('invited', 'active', 'inactive', 'suspended'); +EXCEPTION + WHEN duplicate_object THEN NULL; +END $$; + ALTER TYPE "UserStatus" ADD VALUE IF NOT EXISTS 'invited'; +ALTER TABLE "users" + ALTER COLUMN "status" DROP DEFAULT; + +UPDATE "users" +SET "status" = 'active' +WHERE "status" IS NULL OR "status"::text = 'active'; + +ALTER TABLE "users" + ALTER COLUMN "status" TYPE "UserStatus" + USING CASE + WHEN "status" IS NULL THEN 'invited'::"UserStatus" + WHEN "status"::text = 'active' THEN 'active'::"UserStatus" + WHEN "status"::text = 'inactive' THEN 'inactive'::"UserStatus" + WHEN "status"::text = 'suspended' THEN 'suspended'::"UserStatus" + WHEN "status"::text = 'invited' THEN 'invited'::"UserStatus" + ELSE 'invited'::"UserStatus" + END; + ALTER TABLE "users" ALTER COLUMN "password_hash" DROP NOT NULL, ALTER COLUMN "status" SET DEFAULT 'invited', @@ -7,9 +32,4 @@ ALTER TABLE "users" ADD COLUMN IF NOT EXISTS "invite_token_expires_at" TIMESTAMP(3), ADD COLUMN IF NOT EXISTS "email_verified_at" TIMESTAMP(3), ADD COLUMN IF NOT EXISTS "last_login_at" TIMESTAMP(3); - -UPDATE "users" -SET "status" = 'active' -WHERE "status" IS NULL OR "status"::text = 'active'; - CREATE INDEX IF NOT EXISTS "users_invite_token_hash_idx" ON "users"("invite_token_hash");