Fix user status enum bootstrap migration
This commit is contained in:
@ -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 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 TABLE "users"
|
||||||
ALTER COLUMN "password_hash" DROP NOT NULL,
|
ALTER COLUMN "password_hash" DROP NOT NULL,
|
||||||
ALTER COLUMN "status" SET DEFAULT 'invited',
|
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 "invite_token_expires_at" TIMESTAMP(3),
|
||||||
ADD COLUMN IF NOT EXISTS "email_verified_at" TIMESTAMP(3),
|
ADD COLUMN IF NOT EXISTS "email_verified_at" TIMESTAMP(3),
|
||||||
ADD COLUMN IF NOT EXISTS "last_login_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");
|
CREATE INDEX IF NOT EXISTS "users_invite_token_hash_idx" ON "users"("invite_token_hash");
|
||||||
|
|||||||
Reference in New Issue
Block a user