Make all migration SQL files idempotent for clean prod deploys
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m14s
All checks were successful
Build and Push Docker Image / build (push) Successful in 8m14s
Added IF NOT EXISTS, IF EXISTS, and DO $$ EXCEPTION guards to all migration files from 20260205 onwards so they survive partial application and work correctly on both fresh databases and existing deployments. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
-- =============================================================================
|
||||
-- Phase 7/8 Migration Part 1: Rename stageId → roundId on 15 tables
|
||||
-- Phase 7/8 Migration Part 1: Rename stageId -> roundId on 15 tables
|
||||
-- =============================================================================
|
||||
-- This migration renames stageId columns to roundId and updates FK constraints
|
||||
-- to point to the Round table instead of Stage table.
|
||||
--
|
||||
-- NOTE: After the pipeline migration (20260213), most tables have BOTH a
|
||||
-- nullable roundId column (legacy, no FK) AND a stageId column. We must
|
||||
-- drop the old roundId column before renaming stageId → roundId.
|
||||
-- drop the old roundId column before renaming stageId -> roundId.
|
||||
|
||||
-- ─── 1. EvaluationForm ───────────────────────────────────────────────────────
|
||||
-- --- 1. EvaluationForm ---
|
||||
|
||||
-- Drop old roundId column (nullable, no FK since 20260213 migration)
|
||||
ALTER TABLE "EvaluationForm" DROP COLUMN IF EXISTS "roundId";
|
||||
@@ -20,18 +20,22 @@ ALTER TABLE "EvaluationForm" DROP CONSTRAINT IF EXISTS "EvaluationForm_stageId_f
|
||||
DROP INDEX IF EXISTS "EvaluationForm_stageId_version_key";
|
||||
DROP INDEX IF EXISTS "EvaluationForm_stageId_isActive_idx";
|
||||
|
||||
-- Rename column
|
||||
ALTER TABLE "EvaluationForm" RENAME COLUMN "stageId" TO "roundId";
|
||||
-- Rename column (only if stageId exists)
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "EvaluationForm" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
-- Recreate indexes with new name
|
||||
CREATE UNIQUE INDEX "EvaluationForm_roundId_version_key" ON "EvaluationForm"("roundId", "version");
|
||||
CREATE INDEX "EvaluationForm_roundId_isActive_idx" ON "EvaluationForm"("roundId", "isActive");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "EvaluationForm_roundId_version_key" ON "EvaluationForm"("roundId", "version");
|
||||
CREATE INDEX IF NOT EXISTS "EvaluationForm_roundId_isActive_idx" ON "EvaluationForm"("roundId", "isActive");
|
||||
|
||||
-- Recreate FK pointing to Round
|
||||
ALTER TABLE "EvaluationForm" ADD CONSTRAINT "EvaluationForm_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "EvaluationForm" ADD CONSTRAINT "EvaluationForm_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 2. FileRequirement ──────────────────────────────────────────────────────
|
||||
-- --- 2. FileRequirement ---
|
||||
|
||||
ALTER TABLE "FileRequirement" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -39,14 +43,18 @@ ALTER TABLE "FileRequirement" DROP CONSTRAINT IF EXISTS "FileRequirement_stageId
|
||||
|
||||
DROP INDEX IF EXISTS "FileRequirement_stageId_idx";
|
||||
|
||||
ALTER TABLE "FileRequirement" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FileRequirement" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "FileRequirement_roundId_idx" ON "FileRequirement"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "FileRequirement_roundId_idx" ON "FileRequirement"("roundId");
|
||||
|
||||
ALTER TABLE "FileRequirement" ADD CONSTRAINT "FileRequirement_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FileRequirement" ADD CONSTRAINT "FileRequirement_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 3. Assignment ───────────────────────────────────────────────────────────
|
||||
-- --- 3. Assignment ---
|
||||
|
||||
ALTER TABLE "Assignment" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -55,15 +63,19 @@ ALTER TABLE "Assignment" DROP CONSTRAINT IF EXISTS "Assignment_stageId_fkey";
|
||||
DROP INDEX IF EXISTS "Assignment_userId_projectId_stageId_key";
|
||||
DROP INDEX IF EXISTS "Assignment_stageId_idx";
|
||||
|
||||
ALTER TABLE "Assignment" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "Assignment" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "Assignment_userId_projectId_roundId_key" ON "Assignment"("userId", "projectId", "roundId");
|
||||
CREATE INDEX "Assignment_roundId_idx" ON "Assignment"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Assignment_userId_projectId_roundId_key" ON "Assignment"("userId", "projectId", "roundId");
|
||||
CREATE INDEX IF NOT EXISTS "Assignment_roundId_idx" ON "Assignment"("roundId");
|
||||
|
||||
ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 4. GracePeriod ──────────────────────────────────────────────────────────
|
||||
-- --- 4. GracePeriod ---
|
||||
|
||||
ALTER TABLE "GracePeriod" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -72,15 +84,19 @@ ALTER TABLE "GracePeriod" DROP CONSTRAINT IF EXISTS "GracePeriod_stageId_fkey";
|
||||
DROP INDEX IF EXISTS "GracePeriod_stageId_idx";
|
||||
DROP INDEX IF EXISTS "GracePeriod_stageId_userId_extendedUntil_idx";
|
||||
|
||||
ALTER TABLE "GracePeriod" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "GracePeriod" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "GracePeriod_roundId_idx" ON "GracePeriod"("roundId");
|
||||
CREATE INDEX "GracePeriod_roundId_userId_extendedUntil_idx" ON "GracePeriod"("roundId", "userId", "extendedUntil");
|
||||
CREATE INDEX IF NOT EXISTS "GracePeriod_roundId_idx" ON "GracePeriod"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "GracePeriod_roundId_userId_extendedUntil_idx" ON "GracePeriod"("roundId", "userId", "extendedUntil");
|
||||
|
||||
ALTER TABLE "GracePeriod" ADD CONSTRAINT "GracePeriod_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "GracePeriod" ADD CONSTRAINT "GracePeriod_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 5. LiveVotingSession ────────────────────────────────────────────────────
|
||||
-- --- 5. LiveVotingSession ---
|
||||
|
||||
ALTER TABLE "LiveVotingSession" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -88,14 +104,18 @@ ALTER TABLE "LiveVotingSession" DROP CONSTRAINT IF EXISTS "LiveVotingSession_sta
|
||||
|
||||
DROP INDEX IF EXISTS "LiveVotingSession_stageId_key";
|
||||
|
||||
ALTER TABLE "LiveVotingSession" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "LiveVotingSession" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "LiveVotingSession_roundId_key" ON "LiveVotingSession"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "LiveVotingSession_roundId_key" ON "LiveVotingSession"("roundId");
|
||||
|
||||
ALTER TABLE "LiveVotingSession" ADD CONSTRAINT "LiveVotingSession_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "LiveVotingSession" ADD CONSTRAINT "LiveVotingSession_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 6. FilteringRule ────────────────────────────────────────────────────────
|
||||
-- --- 6. FilteringRule ---
|
||||
|
||||
ALTER TABLE "FilteringRule" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -103,14 +123,18 @@ ALTER TABLE "FilteringRule" DROP CONSTRAINT IF EXISTS "FilteringRule_stageId_fke
|
||||
|
||||
DROP INDEX IF EXISTS "FilteringRule_stageId_idx";
|
||||
|
||||
ALTER TABLE "FilteringRule" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FilteringRule" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "FilteringRule_roundId_idx" ON "FilteringRule"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "FilteringRule_roundId_idx" ON "FilteringRule"("roundId");
|
||||
|
||||
ALTER TABLE "FilteringRule" ADD CONSTRAINT "FilteringRule_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FilteringRule" ADD CONSTRAINT "FilteringRule_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 7. FilteringResult ──────────────────────────────────────────────────────
|
||||
-- --- 7. FilteringResult ---
|
||||
|
||||
ALTER TABLE "FilteringResult" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -119,15 +143,19 @@ ALTER TABLE "FilteringResult" DROP CONSTRAINT IF EXISTS "FilteringResult_stageId
|
||||
DROP INDEX IF EXISTS "FilteringResult_stageId_projectId_key";
|
||||
DROP INDEX IF EXISTS "FilteringResult_stageId_idx";
|
||||
|
||||
ALTER TABLE "FilteringResult" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FilteringResult" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "FilteringResult_roundId_projectId_key" ON "FilteringResult"("roundId", "projectId");
|
||||
CREATE INDEX "FilteringResult_roundId_idx" ON "FilteringResult"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "FilteringResult_roundId_projectId_key" ON "FilteringResult"("roundId", "projectId");
|
||||
CREATE INDEX IF NOT EXISTS "FilteringResult_roundId_idx" ON "FilteringResult"("roundId");
|
||||
|
||||
ALTER TABLE "FilteringResult" ADD CONSTRAINT "FilteringResult_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FilteringResult" ADD CONSTRAINT "FilteringResult_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 8. FilteringJob ─────────────────────────────────────────────────────────
|
||||
-- --- 8. FilteringJob ---
|
||||
|
||||
ALTER TABLE "FilteringJob" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -135,14 +163,18 @@ ALTER TABLE "FilteringJob" DROP CONSTRAINT IF EXISTS "FilteringJob_stageId_fkey"
|
||||
|
||||
DROP INDEX IF EXISTS "FilteringJob_stageId_idx";
|
||||
|
||||
ALTER TABLE "FilteringJob" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FilteringJob" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "FilteringJob_roundId_idx" ON "FilteringJob"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "FilteringJob_roundId_idx" ON "FilteringJob"("roundId");
|
||||
|
||||
ALTER TABLE "FilteringJob" ADD CONSTRAINT "FilteringJob_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "FilteringJob" ADD CONSTRAINT "FilteringJob_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 9. AssignmentJob ────────────────────────────────────────────────────────
|
||||
-- --- 9. AssignmentJob ---
|
||||
|
||||
ALTER TABLE "AssignmentJob" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -150,14 +182,18 @@ ALTER TABLE "AssignmentJob" DROP CONSTRAINT IF EXISTS "AssignmentJob_stageId_fke
|
||||
|
||||
DROP INDEX IF EXISTS "AssignmentJob_stageId_idx";
|
||||
|
||||
ALTER TABLE "AssignmentJob" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "AssignmentJob" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "AssignmentJob_roundId_idx" ON "AssignmentJob"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "AssignmentJob_roundId_idx" ON "AssignmentJob"("roundId");
|
||||
|
||||
ALTER TABLE "AssignmentJob" ADD CONSTRAINT "AssignmentJob_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "AssignmentJob" ADD CONSTRAINT "AssignmentJob_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 10. ReminderLog ─────────────────────────────────────────────────────────
|
||||
-- --- 10. ReminderLog ---
|
||||
|
||||
ALTER TABLE "ReminderLog" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -166,15 +202,19 @@ ALTER TABLE "ReminderLog" DROP CONSTRAINT IF EXISTS "ReminderLog_stageId_fkey";
|
||||
DROP INDEX IF EXISTS "ReminderLog_stageId_userId_type_key";
|
||||
DROP INDEX IF EXISTS "ReminderLog_stageId_idx";
|
||||
|
||||
ALTER TABLE "ReminderLog" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "ReminderLog" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "ReminderLog_roundId_userId_type_key" ON "ReminderLog"("roundId", "userId", "type");
|
||||
CREATE INDEX "ReminderLog_roundId_idx" ON "ReminderLog"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "ReminderLog_roundId_userId_type_key" ON "ReminderLog"("roundId", "userId", "type");
|
||||
CREATE INDEX IF NOT EXISTS "ReminderLog_roundId_idx" ON "ReminderLog"("roundId");
|
||||
|
||||
ALTER TABLE "ReminderLog" ADD CONSTRAINT "ReminderLog_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "ReminderLog" ADD CONSTRAINT "ReminderLog_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 11. EvaluationSummary ───────────────────────────────────────────────────
|
||||
-- --- 11. EvaluationSummary ---
|
||||
|
||||
ALTER TABLE "EvaluationSummary" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -183,15 +223,19 @@ ALTER TABLE "EvaluationSummary" DROP CONSTRAINT IF EXISTS "EvaluationSummary_sta
|
||||
DROP INDEX IF EXISTS "EvaluationSummary_projectId_stageId_key";
|
||||
DROP INDEX IF EXISTS "EvaluationSummary_stageId_idx";
|
||||
|
||||
ALTER TABLE "EvaluationSummary" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "EvaluationSummary" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "EvaluationSummary_projectId_roundId_key" ON "EvaluationSummary"("projectId", "roundId");
|
||||
CREATE INDEX "EvaluationSummary_roundId_idx" ON "EvaluationSummary"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "EvaluationSummary_projectId_roundId_key" ON "EvaluationSummary"("projectId", "roundId");
|
||||
CREATE INDEX IF NOT EXISTS "EvaluationSummary_roundId_idx" ON "EvaluationSummary"("roundId");
|
||||
|
||||
ALTER TABLE "EvaluationSummary" ADD CONSTRAINT "EvaluationSummary_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "EvaluationSummary" ADD CONSTRAINT "EvaluationSummary_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 12. EvaluationDiscussion ────────────────────────────────────────────────
|
||||
-- --- 12. EvaluationDiscussion ---
|
||||
|
||||
ALTER TABLE "EvaluationDiscussion" DROP COLUMN IF EXISTS "roundId";
|
||||
|
||||
@@ -200,15 +244,19 @@ ALTER TABLE "EvaluationDiscussion" DROP CONSTRAINT IF EXISTS "EvaluationDiscussi
|
||||
DROP INDEX IF EXISTS "EvaluationDiscussion_projectId_stageId_key";
|
||||
DROP INDEX IF EXISTS "EvaluationDiscussion_stageId_idx";
|
||||
|
||||
ALTER TABLE "EvaluationDiscussion" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "EvaluationDiscussion" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "EvaluationDiscussion_projectId_roundId_key" ON "EvaluationDiscussion"("projectId", "roundId");
|
||||
CREATE INDEX "EvaluationDiscussion_roundId_idx" ON "EvaluationDiscussion"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "EvaluationDiscussion_projectId_roundId_key" ON "EvaluationDiscussion"("projectId", "roundId");
|
||||
CREATE INDEX IF NOT EXISTS "EvaluationDiscussion_roundId_idx" ON "EvaluationDiscussion"("roundId");
|
||||
|
||||
ALTER TABLE "EvaluationDiscussion" ADD CONSTRAINT "EvaluationDiscussion_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "EvaluationDiscussion" ADD CONSTRAINT "EvaluationDiscussion_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 13. Message ─────────────────────────────────────────────────────────────
|
||||
-- --- 13. Message ---
|
||||
|
||||
-- Message has roundId (from init, nullable) and stageId (from pipeline, nullable)
|
||||
ALTER TABLE "Message" DROP COLUMN IF EXISTS "roundId";
|
||||
@@ -217,42 +265,54 @@ ALTER TABLE "Message" DROP CONSTRAINT IF EXISTS "Message_stageId_fkey";
|
||||
|
||||
DROP INDEX IF EXISTS "Message_stageId_idx";
|
||||
|
||||
ALTER TABLE "Message" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "Message" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "Message_roundId_idx" ON "Message"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "Message_roundId_idx" ON "Message"("roundId");
|
||||
|
||||
ALTER TABLE "Message" ADD CONSTRAINT "Message_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "Message" ADD CONSTRAINT "Message_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 14. Cohort ──────────────────────────────────────────────────────────────
|
||||
-- --- 14. Cohort ---
|
||||
-- Cohort was created in pipeline migration with stageId only (no roundId)
|
||||
|
||||
ALTER TABLE "Cohort" DROP CONSTRAINT IF EXISTS "Cohort_stageId_fkey";
|
||||
|
||||
DROP INDEX IF EXISTS "Cohort_stageId_idx";
|
||||
|
||||
ALTER TABLE "Cohort" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "Cohort" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE INDEX "Cohort_roundId_idx" ON "Cohort"("roundId");
|
||||
CREATE INDEX IF NOT EXISTS "Cohort_roundId_idx" ON "Cohort"("roundId");
|
||||
|
||||
ALTER TABLE "Cohort" ADD CONSTRAINT "Cohort_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "Cohort" ADD CONSTRAINT "Cohort_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 15. LiveProgressCursor ──────────────────────────────────────────────────
|
||||
-- --- 15. LiveProgressCursor ---
|
||||
-- LiveProgressCursor was created in pipeline migration with stageId only (no roundId)
|
||||
|
||||
ALTER TABLE "LiveProgressCursor" DROP CONSTRAINT IF EXISTS "LiveProgressCursor_stageId_fkey";
|
||||
|
||||
DROP INDEX IF EXISTS "LiveProgressCursor_stageId_key";
|
||||
|
||||
ALTER TABLE "LiveProgressCursor" RENAME COLUMN "stageId" TO "roundId";
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "LiveProgressCursor" RENAME COLUMN "stageId" TO "roundId";
|
||||
EXCEPTION WHEN undefined_column THEN NULL; END $$;
|
||||
|
||||
CREATE UNIQUE INDEX "LiveProgressCursor_roundId_key" ON "LiveProgressCursor"("roundId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "LiveProgressCursor_roundId_key" ON "LiveProgressCursor"("roundId");
|
||||
|
||||
ALTER TABLE "LiveProgressCursor" ADD CONSTRAINT "LiveProgressCursor_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "LiveProgressCursor" ADD CONSTRAINT "LiveProgressCursor_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 16. SpecialAward: Drop trackId column ───────────────────────────────────
|
||||
-- --- 16. SpecialAward: Drop trackId column ---
|
||||
|
||||
ALTER TABLE "SpecialAward" DROP CONSTRAINT IF EXISTS "SpecialAward_trackId_fkey";
|
||||
|
||||
@@ -260,12 +320,16 @@ DROP INDEX IF EXISTS "SpecialAward_trackId_key";
|
||||
|
||||
ALTER TABLE "SpecialAward" DROP COLUMN IF EXISTS "trackId";
|
||||
|
||||
-- ─── 17. ConflictOfInterest: roundId was made nullable in pipeline migration ─
|
||||
-- --- 17. ConflictOfInterest: roundId was made nullable in pipeline migration ---
|
||||
-- It still exists, just restore FK to new Round table
|
||||
ALTER TABLE "ConflictOfInterest" ADD CONSTRAINT "ConflictOfInterest_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "ConflictOfInterest" ADD CONSTRAINT "ConflictOfInterest_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- ─── 18. TaggingJob: roundId was made nullable in pipeline migration ─────────
|
||||
-- --- 18. TaggingJob: roundId was made nullable in pipeline migration ---
|
||||
-- Restore FK to new Round table
|
||||
ALTER TABLE "TaggingJob" ADD CONSTRAINT "TaggingJob_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
DO $$ BEGIN
|
||||
ALTER TABLE "TaggingJob" ADD CONSTRAINT "TaggingJob_roundId_fkey"
|
||||
FOREIGN KEY ("roundId") REFERENCES "Round"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
Reference in New Issue
Block a user