@@ -20,18 +20,26 @@ ALTER TABLE "event_participation" DROP COLUMN IF EXISTS "last_progressed_at";
2020ALTER TABLE " event_participation" DROP COLUMN IF EXISTS " granted_by" ;
2121ALTER 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