Skip to content

Commit d3771c9

Browse files
fix: 마이그레이션 enum 정리 멱등성 보장 (#327)
1 parent c74e789 commit d3771c9

1 file changed

Lines changed: 23 additions & 15 deletions

File tree

supabase/migrations/20260311000000_cleanup_unused_columns_and_tables.sql

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,26 @@ ALTER TABLE "event_participation" DROP COLUMN IF EXISTS "last_progressed_at";
2020
ALTER TABLE "event_participation" DROP COLUMN IF EXISTS "granted_by";
2121
ALTER TABLE "event_participation" DROP COLUMN IF EXISTS "grant_reason";
2222

23-
-- 5. Remove unused enum values from event_reward_status
24-
-- PostgreSQL doesn't support DROP VALUE from enum directly.
25-
-- Create new enum, migrate column, drop old enum.
26-
ALTER TYPE "event_participation_reward_status_enum"
27-
RENAME TO "event_participation_reward_status_enum_old";
28-
29-
CREATE TYPE "event_participation_reward_status_enum" AS ENUM ('NOT_GRANTED', 'GRANTED');
30-
31-
ALTER TABLE "event_participation"
32-
ALTER COLUMN "reward_status" DROP DEFAULT,
33-
ALTER COLUMN "reward_status" TYPE "event_participation_reward_status_enum"
34-
USING "reward_status"::text::"event_participation_reward_status_enum",
35-
ALTER COLUMN "reward_status" SET DEFAULT 'NOT_GRANTED';
36-
37-
DROP TYPE "event_participation_reward_status_enum_old";
23+
-- 5. Remove unused enum values from event_reward_status (idempotent)
24+
DO $$
25+
BEGIN
26+
-- Only run if old enum still has UNDER_REVIEW (i.e., not yet migrated)
27+
IF EXISTS (
28+
SELECT 1 FROM pg_enum
29+
WHERE enumlabel = 'UNDER_REVIEW'
30+
AND enumtypid = 'event_participation_reward_status_enum'::regtype
31+
) THEN
32+
ALTER TYPE "event_participation_reward_status_enum"
33+
RENAME TO "event_participation_reward_status_enum_old";
34+
35+
CREATE TYPE "event_participation_reward_status_enum" AS ENUM ('NOT_GRANTED', 'GRANTED');
36+
37+
ALTER TABLE "event_participation"
38+
ALTER COLUMN "reward_status" DROP DEFAULT,
39+
ALTER COLUMN "reward_status" TYPE "event_participation_reward_status_enum"
40+
USING "reward_status"::text::"event_participation_reward_status_enum",
41+
ALTER COLUMN "reward_status" SET DEFAULT 'NOT_GRANTED';
42+
43+
DROP TYPE "event_participation_reward_status_enum_old";
44+
END IF;
45+
END $$;

0 commit comments

Comments
 (0)