Fix migration with fully idempotent SQL to handle partial application
Build and Push Docker Image / build (push) Successful in 11m46s
Details
Build and Push Docker Image / build (push) Successful in 11m46s
Details
Rewrote pipeline/stage migration with defensive guards: - DO blocks with EXCEPTION handlers for enum/constraint creation - IF NOT EXISTS on all CREATE TABLE/INDEX - IF EXISTS on all DROP INDEX - Handles re-running after partial failure Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
68d3dde1aa
commit
dc075f8969
|
|
@ -6,24 +6,24 @@
|
|||
-- 1. NEW ENUM TYPES
|
||||
-- =====================================================
|
||||
|
||||
CREATE TYPE "StageType" AS ENUM ('INTAKE', 'FILTER', 'EVALUATION', 'SELECTION', 'LIVE_FINAL', 'RESULTS');
|
||||
CREATE TYPE "TrackKind" AS ENUM ('MAIN', 'AWARD', 'SHOWCASE');
|
||||
CREATE TYPE "RoutingMode" AS ENUM ('PARALLEL', 'EXCLUSIVE', 'POST_MAIN');
|
||||
CREATE TYPE "StageStatus" AS ENUM ('STAGE_DRAFT', 'STAGE_ACTIVE', 'STAGE_CLOSED', 'STAGE_ARCHIVED');
|
||||
CREATE TYPE "ProjectStageStateValue" AS ENUM ('PENDING', 'IN_PROGRESS', 'PASSED', 'REJECTED', 'ROUTED', 'COMPLETED', 'WITHDRAWN');
|
||||
CREATE TYPE "DecisionMode" AS ENUM ('JURY_VOTE', 'AWARD_MASTER_DECISION', 'ADMIN_DECISION');
|
||||
CREATE TYPE "OverrideReasonCode" AS ENUM ('DATA_CORRECTION', 'POLICY_EXCEPTION', 'JURY_CONFLICT', 'SPONSOR_DECISION', 'ADMIN_DISCRETION');
|
||||
DO $$ BEGIN CREATE TYPE "StageType" AS ENUM ('INTAKE', 'FILTER', 'EVALUATION', 'SELECTION', 'LIVE_FINAL', 'RESULTS'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE TYPE "TrackKind" AS ENUM ('MAIN', 'AWARD', 'SHOWCASE'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE TYPE "RoutingMode" AS ENUM ('PARALLEL', 'EXCLUSIVE', 'POST_MAIN'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE TYPE "StageStatus" AS ENUM ('STAGE_DRAFT', 'STAGE_ACTIVE', 'STAGE_CLOSED', 'STAGE_ARCHIVED'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE TYPE "ProjectStageStateValue" AS ENUM ('PENDING', 'IN_PROGRESS', 'PASSED', 'REJECTED', 'ROUTED', 'COMPLETED', 'WITHDRAWN'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE TYPE "DecisionMode" AS ENUM ('JURY_VOTE', 'AWARD_MASTER_DECISION', 'ADMIN_DECISION'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN CREATE TYPE "OverrideReasonCode" AS ENUM ('DATA_CORRECTION', 'POLICY_EXCEPTION', 'JURY_CONFLICT', 'SPONSOR_DECISION', 'ADMIN_DISCRETION'); EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- Add new values to existing UserRole enum
|
||||
ALTER TYPE "UserRole" ADD VALUE 'AWARD_MASTER';
|
||||
ALTER TYPE "UserRole" ADD VALUE 'AUDIENCE';
|
||||
ALTER TYPE "UserRole" ADD VALUE IF NOT EXISTS 'AWARD_MASTER';
|
||||
ALTER TYPE "UserRole" ADD VALUE IF NOT EXISTS 'AUDIENCE';
|
||||
|
||||
-- =====================================================
|
||||
-- 2. NEW TABLES: Pipeline infrastructure
|
||||
-- =====================================================
|
||||
|
||||
-- Pipeline
|
||||
CREATE TABLE "Pipeline" (
|
||||
CREATE TABLE IF NOT EXISTS "Pipeline" (
|
||||
"id" TEXT NOT NULL,
|
||||
"programId" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
|
|
@ -36,12 +36,12 @@ CREATE TABLE "Pipeline" (
|
|||
CONSTRAINT "Pipeline_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "Pipeline_slug_key" ON "Pipeline"("slug");
|
||||
CREATE INDEX "Pipeline_programId_idx" ON "Pipeline"("programId");
|
||||
CREATE INDEX "Pipeline_status_idx" ON "Pipeline"("status");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Pipeline_slug_key" ON "Pipeline"("slug");
|
||||
CREATE INDEX IF NOT EXISTS "Pipeline_programId_idx" ON "Pipeline"("programId");
|
||||
CREATE INDEX IF NOT EXISTS "Pipeline_status_idx" ON "Pipeline"("status");
|
||||
|
||||
-- Track
|
||||
CREATE TABLE "Track" (
|
||||
CREATE TABLE IF NOT EXISTS "Track" (
|
||||
"id" TEXT NOT NULL,
|
||||
"pipelineId" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
|
|
@ -57,13 +57,13 @@ CREATE TABLE "Track" (
|
|||
CONSTRAINT "Track_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "Track_pipelineId_slug_key" ON "Track"("pipelineId", "slug");
|
||||
CREATE UNIQUE INDEX "Track_pipelineId_sortOrder_key" ON "Track"("pipelineId", "sortOrder");
|
||||
CREATE INDEX "Track_pipelineId_idx" ON "Track"("pipelineId");
|
||||
CREATE INDEX "Track_kind_idx" ON "Track"("kind");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Track_pipelineId_slug_key" ON "Track"("pipelineId", "slug");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Track_pipelineId_sortOrder_key" ON "Track"("pipelineId", "sortOrder");
|
||||
CREATE INDEX IF NOT EXISTS "Track_pipelineId_idx" ON "Track"("pipelineId");
|
||||
CREATE INDEX IF NOT EXISTS "Track_kind_idx" ON "Track"("kind");
|
||||
|
||||
-- Stage
|
||||
CREATE TABLE "Stage" (
|
||||
CREATE TABLE IF NOT EXISTS "Stage" (
|
||||
"id" TEXT NOT NULL,
|
||||
"trackId" TEXT NOT NULL,
|
||||
"stageType" "StageType" NOT NULL,
|
||||
|
|
@ -80,14 +80,14 @@ CREATE TABLE "Stage" (
|
|||
CONSTRAINT "Stage_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "Stage_trackId_slug_key" ON "Stage"("trackId", "slug");
|
||||
CREATE UNIQUE INDEX "Stage_trackId_sortOrder_key" ON "Stage"("trackId", "sortOrder");
|
||||
CREATE INDEX "Stage_trackId_idx" ON "Stage"("trackId");
|
||||
CREATE INDEX "Stage_stageType_idx" ON "Stage"("stageType");
|
||||
CREATE INDEX "Stage_status_idx" ON "Stage"("status");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Stage_trackId_slug_key" ON "Stage"("trackId", "slug");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Stage_trackId_sortOrder_key" ON "Stage"("trackId", "sortOrder");
|
||||
CREATE INDEX IF NOT EXISTS "Stage_trackId_idx" ON "Stage"("trackId");
|
||||
CREATE INDEX IF NOT EXISTS "Stage_stageType_idx" ON "Stage"("stageType");
|
||||
CREATE INDEX IF NOT EXISTS "Stage_status_idx" ON "Stage"("status");
|
||||
|
||||
-- StageTransition
|
||||
CREATE TABLE "StageTransition" (
|
||||
CREATE TABLE IF NOT EXISTS "StageTransition" (
|
||||
"id" TEXT NOT NULL,
|
||||
"fromStageId" TEXT NOT NULL,
|
||||
"toStageId" TEXT NOT NULL,
|
||||
|
|
@ -98,12 +98,12 @@ CREATE TABLE "StageTransition" (
|
|||
CONSTRAINT "StageTransition_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "StageTransition_fromStageId_toStageId_key" ON "StageTransition"("fromStageId", "toStageId");
|
||||
CREATE INDEX "StageTransition_fromStageId_idx" ON "StageTransition"("fromStageId");
|
||||
CREATE INDEX "StageTransition_toStageId_idx" ON "StageTransition"("toStageId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "StageTransition_fromStageId_toStageId_key" ON "StageTransition"("fromStageId", "toStageId");
|
||||
CREATE INDEX IF NOT EXISTS "StageTransition_fromStageId_idx" ON "StageTransition"("fromStageId");
|
||||
CREATE INDEX IF NOT EXISTS "StageTransition_toStageId_idx" ON "StageTransition"("toStageId");
|
||||
|
||||
-- ProjectStageState
|
||||
CREATE TABLE "ProjectStageState" (
|
||||
CREATE TABLE IF NOT EXISTS "ProjectStageState" (
|
||||
"id" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
"trackId" TEXT NOT NULL,
|
||||
|
|
@ -118,15 +118,15 @@ CREATE TABLE "ProjectStageState" (
|
|||
CONSTRAINT "ProjectStageState_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "ProjectStageState_projectId_trackId_stageId_key" ON "ProjectStageState"("projectId", "trackId", "stageId");
|
||||
CREATE INDEX "ProjectStageState_projectId_idx" ON "ProjectStageState"("projectId");
|
||||
CREATE INDEX "ProjectStageState_trackId_idx" ON "ProjectStageState"("trackId");
|
||||
CREATE INDEX "ProjectStageState_stageId_idx" ON "ProjectStageState"("stageId");
|
||||
CREATE INDEX "ProjectStageState_state_idx" ON "ProjectStageState"("state");
|
||||
CREATE INDEX "ProjectStageState_projectId_trackId_idx" ON "ProjectStageState"("projectId", "trackId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "ProjectStageState_projectId_trackId_stageId_key" ON "ProjectStageState"("projectId", "trackId", "stageId");
|
||||
CREATE INDEX IF NOT EXISTS "ProjectStageState_projectId_idx" ON "ProjectStageState"("projectId");
|
||||
CREATE INDEX IF NOT EXISTS "ProjectStageState_trackId_idx" ON "ProjectStageState"("trackId");
|
||||
CREATE INDEX IF NOT EXISTS "ProjectStageState_stageId_idx" ON "ProjectStageState"("stageId");
|
||||
CREATE INDEX IF NOT EXISTS "ProjectStageState_state_idx" ON "ProjectStageState"("state");
|
||||
CREATE INDEX IF NOT EXISTS "ProjectStageState_projectId_trackId_idx" ON "ProjectStageState"("projectId", "trackId");
|
||||
|
||||
-- RoutingRule
|
||||
CREATE TABLE "RoutingRule" (
|
||||
CREATE TABLE IF NOT EXISTS "RoutingRule" (
|
||||
"id" TEXT NOT NULL,
|
||||
"pipelineId" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
|
|
@ -143,12 +143,12 @@ CREATE TABLE "RoutingRule" (
|
|||
CONSTRAINT "RoutingRule_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE INDEX "RoutingRule_pipelineId_idx" ON "RoutingRule"("pipelineId");
|
||||
CREATE INDEX "RoutingRule_priority_idx" ON "RoutingRule"("priority");
|
||||
CREATE INDEX "RoutingRule_isActive_idx" ON "RoutingRule"("isActive");
|
||||
CREATE INDEX IF NOT EXISTS "RoutingRule_pipelineId_idx" ON "RoutingRule"("pipelineId");
|
||||
CREATE INDEX IF NOT EXISTS "RoutingRule_priority_idx" ON "RoutingRule"("priority");
|
||||
CREATE INDEX IF NOT EXISTS "RoutingRule_isActive_idx" ON "RoutingRule"("isActive");
|
||||
|
||||
-- Cohort
|
||||
CREATE TABLE "Cohort" (
|
||||
CREATE TABLE IF NOT EXISTS "Cohort" (
|
||||
"id" TEXT NOT NULL,
|
||||
"stageId" TEXT NOT NULL,
|
||||
"name" TEXT NOT NULL,
|
||||
|
|
@ -162,11 +162,11 @@ CREATE TABLE "Cohort" (
|
|||
CONSTRAINT "Cohort_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE INDEX "Cohort_stageId_idx" ON "Cohort"("stageId");
|
||||
CREATE INDEX "Cohort_isOpen_idx" ON "Cohort"("isOpen");
|
||||
CREATE INDEX IF NOT EXISTS "Cohort_stageId_idx" ON "Cohort"("stageId");
|
||||
CREATE INDEX IF NOT EXISTS "Cohort_isOpen_idx" ON "Cohort"("isOpen");
|
||||
|
||||
-- CohortProject
|
||||
CREATE TABLE "CohortProject" (
|
||||
CREATE TABLE IF NOT EXISTS "CohortProject" (
|
||||
"id" TEXT NOT NULL,
|
||||
"cohortId" TEXT NOT NULL,
|
||||
"projectId" TEXT NOT NULL,
|
||||
|
|
@ -176,13 +176,13 @@ CREATE TABLE "CohortProject" (
|
|||
CONSTRAINT "CohortProject_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "CohortProject_cohortId_projectId_key" ON "CohortProject"("cohortId", "projectId");
|
||||
CREATE INDEX "CohortProject_cohortId_idx" ON "CohortProject"("cohortId");
|
||||
CREATE INDEX "CohortProject_projectId_idx" ON "CohortProject"("projectId");
|
||||
CREATE INDEX "CohortProject_sortOrder_idx" ON "CohortProject"("sortOrder");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "CohortProject_cohortId_projectId_key" ON "CohortProject"("cohortId", "projectId");
|
||||
CREATE INDEX IF NOT EXISTS "CohortProject_cohortId_idx" ON "CohortProject"("cohortId");
|
||||
CREATE INDEX IF NOT EXISTS "CohortProject_projectId_idx" ON "CohortProject"("projectId");
|
||||
CREATE INDEX IF NOT EXISTS "CohortProject_sortOrder_idx" ON "CohortProject"("sortOrder");
|
||||
|
||||
-- LiveProgressCursor
|
||||
CREATE TABLE "LiveProgressCursor" (
|
||||
CREATE TABLE IF NOT EXISTS "LiveProgressCursor" (
|
||||
"id" TEXT NOT NULL,
|
||||
"stageId" TEXT NOT NULL,
|
||||
"sessionId" TEXT NOT NULL,
|
||||
|
|
@ -195,12 +195,12 @@ CREATE TABLE "LiveProgressCursor" (
|
|||
CONSTRAINT "LiveProgressCursor_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "LiveProgressCursor_stageId_key" ON "LiveProgressCursor"("stageId");
|
||||
CREATE UNIQUE INDEX "LiveProgressCursor_sessionId_key" ON "LiveProgressCursor"("sessionId");
|
||||
CREATE INDEX "LiveProgressCursor_sessionId_idx" ON "LiveProgressCursor"("sessionId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "LiveProgressCursor_stageId_key" ON "LiveProgressCursor"("stageId");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "LiveProgressCursor_sessionId_key" ON "LiveProgressCursor"("sessionId");
|
||||
CREATE INDEX IF NOT EXISTS "LiveProgressCursor_sessionId_idx" ON "LiveProgressCursor"("sessionId");
|
||||
|
||||
-- OverrideAction
|
||||
CREATE TABLE "OverrideAction" (
|
||||
CREATE TABLE IF NOT EXISTS "OverrideAction" (
|
||||
"id" TEXT NOT NULL,
|
||||
"entityType" TEXT NOT NULL,
|
||||
"entityId" TEXT NOT NULL,
|
||||
|
|
@ -214,13 +214,13 @@ CREATE TABLE "OverrideAction" (
|
|||
CONSTRAINT "OverrideAction_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE INDEX "OverrideAction_entityType_entityId_idx" ON "OverrideAction"("entityType", "entityId");
|
||||
CREATE INDEX "OverrideAction_actorId_idx" ON "OverrideAction"("actorId");
|
||||
CREATE INDEX "OverrideAction_reasonCode_idx" ON "OverrideAction"("reasonCode");
|
||||
CREATE INDEX "OverrideAction_createdAt_idx" ON "OverrideAction"("createdAt");
|
||||
CREATE INDEX IF NOT EXISTS "OverrideAction_entityType_entityId_idx" ON "OverrideAction"("entityType", "entityId");
|
||||
CREATE INDEX IF NOT EXISTS "OverrideAction_actorId_idx" ON "OverrideAction"("actorId");
|
||||
CREATE INDEX IF NOT EXISTS "OverrideAction_reasonCode_idx" ON "OverrideAction"("reasonCode");
|
||||
CREATE INDEX IF NOT EXISTS "OverrideAction_createdAt_idx" ON "OverrideAction"("createdAt");
|
||||
|
||||
-- DecisionAuditLog
|
||||
CREATE TABLE "DecisionAuditLog" (
|
||||
CREATE TABLE IF NOT EXISTS "DecisionAuditLog" (
|
||||
"id" TEXT NOT NULL,
|
||||
"eventType" TEXT NOT NULL,
|
||||
"entityType" TEXT NOT NULL,
|
||||
|
|
@ -233,13 +233,13 @@ CREATE TABLE "DecisionAuditLog" (
|
|||
CONSTRAINT "DecisionAuditLog_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE INDEX "DecisionAuditLog_eventType_idx" ON "DecisionAuditLog"("eventType");
|
||||
CREATE INDEX "DecisionAuditLog_entityType_entityId_idx" ON "DecisionAuditLog"("entityType", "entityId");
|
||||
CREATE INDEX "DecisionAuditLog_actorId_idx" ON "DecisionAuditLog"("actorId");
|
||||
CREATE INDEX "DecisionAuditLog_createdAt_idx" ON "DecisionAuditLog"("createdAt");
|
||||
CREATE INDEX IF NOT EXISTS "DecisionAuditLog_eventType_idx" ON "DecisionAuditLog"("eventType");
|
||||
CREATE INDEX IF NOT EXISTS "DecisionAuditLog_entityType_entityId_idx" ON "DecisionAuditLog"("entityType", "entityId");
|
||||
CREATE INDEX IF NOT EXISTS "DecisionAuditLog_actorId_idx" ON "DecisionAuditLog"("actorId");
|
||||
CREATE INDEX IF NOT EXISTS "DecisionAuditLog_createdAt_idx" ON "DecisionAuditLog"("createdAt");
|
||||
|
||||
-- NotificationPolicy
|
||||
CREATE TABLE "NotificationPolicy" (
|
||||
CREATE TABLE IF NOT EXISTS "NotificationPolicy" (
|
||||
"id" TEXT NOT NULL,
|
||||
"eventType" TEXT NOT NULL,
|
||||
"channel" TEXT NOT NULL DEFAULT 'EMAIL',
|
||||
|
|
@ -252,9 +252,9 @@ CREATE TABLE "NotificationPolicy" (
|
|||
CONSTRAINT "NotificationPolicy_pkey" PRIMARY KEY ("id")
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX "NotificationPolicy_eventType_key" ON "NotificationPolicy"("eventType");
|
||||
CREATE INDEX "NotificationPolicy_eventType_idx" ON "NotificationPolicy"("eventType");
|
||||
CREATE INDEX "NotificationPolicy_isActive_idx" ON "NotificationPolicy"("isActive");
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "NotificationPolicy_eventType_key" ON "NotificationPolicy"("eventType");
|
||||
CREATE INDEX IF NOT EXISTS "NotificationPolicy_eventType_idx" ON "NotificationPolicy"("eventType");
|
||||
CREATE INDEX IF NOT EXISTS "NotificationPolicy_isActive_idx" ON "NotificationPolicy"("isActive");
|
||||
|
||||
-- =====================================================
|
||||
-- 3. DROP roundId FK constraints (roundId is now a raw legacy field)
|
||||
|
|
@ -278,8 +278,8 @@ ALTER TABLE "ProjectFile" DROP CONSTRAINT IF EXISTS "ProjectFile_roundId_fkey";
|
|||
ALTER TABLE "TaggingJob" DROP CONSTRAINT IF EXISTS "TaggingJob_roundId_fkey";
|
||||
ALTER TABLE "Message" DROP CONSTRAINT IF EXISTS "Message_roundId_fkey";
|
||||
|
||||
-- Make remaining roundId columns nullable (those that were NOT NULL)
|
||||
ALTER TABLE "TaggingJob" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
-- Make TaggingJob.roundId nullable
|
||||
DO $$ BEGIN ALTER TABLE "TaggingJob" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
|
||||
-- Drop Round table and its enums (model retired in Phase 6)
|
||||
DROP TABLE IF EXISTS "Round" CASCADE;
|
||||
|
|
@ -291,155 +291,138 @@ DROP TYPE IF EXISTS "RoundType";
|
|||
-- =====================================================
|
||||
|
||||
-- EvaluationForm: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "EvaluationForm" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "EvaluationForm" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "EvaluationForm" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
DROP INDEX "EvaluationForm_roundId_version_key";
|
||||
CREATE UNIQUE INDEX "EvaluationForm_stageId_version_key" ON "EvaluationForm"("stageId", "version");
|
||||
CREATE INDEX "EvaluationForm_stageId_isActive_idx" ON "EvaluationForm"("stageId", "isActive");
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationForm" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "EvaluationForm" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationForm" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
DROP INDEX IF EXISTS "EvaluationForm_roundId_version_key";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "EvaluationForm_stageId_version_key" ON "EvaluationForm"("stageId", "version");
|
||||
CREATE INDEX IF NOT EXISTS "EvaluationForm_stageId_isActive_idx" ON "EvaluationForm"("stageId", "isActive");
|
||||
|
||||
-- Assignment: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "Assignment" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "Assignment" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "Assignment" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
DROP INDEX "Assignment_userId_projectId_roundId_key";
|
||||
CREATE UNIQUE INDEX "Assignment_userId_projectId_stageId_key" ON "Assignment"("userId", "projectId", "stageId");
|
||||
CREATE INDEX "Assignment_stageId_idx" ON "Assignment"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "Assignment" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "Assignment" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "Assignment" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
DROP INDEX IF EXISTS "Assignment_userId_projectId_roundId_key";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "Assignment_userId_projectId_stageId_key" ON "Assignment"("userId", "projectId", "stageId");
|
||||
CREATE INDEX IF NOT EXISTS "Assignment_stageId_idx" ON "Assignment"("stageId");
|
||||
|
||||
-- GracePeriod: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "GracePeriod" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "GracePeriod" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "GracePeriod" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
CREATE INDEX "GracePeriod_stageId_idx" ON "GracePeriod"("stageId");
|
||||
CREATE INDEX "GracePeriod_stageId_userId_extendedUntil_idx" ON "GracePeriod"("stageId", "userId", "extendedUntil");
|
||||
DO $$ BEGIN ALTER TABLE "GracePeriod" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "GracePeriod" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "GracePeriod" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
CREATE INDEX IF NOT EXISTS "GracePeriod_stageId_idx" ON "GracePeriod"("stageId");
|
||||
CREATE INDEX IF NOT EXISTS "GracePeriod_stageId_userId_extendedUntil_idx" ON "GracePeriod"("stageId", "userId", "extendedUntil");
|
||||
|
||||
-- FileRequirement: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "FileRequirement" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "FileRequirement" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "FileRequirement" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
CREATE INDEX "FileRequirement_stageId_idx" ON "FileRequirement"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "FileRequirement" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "FileRequirement" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "FileRequirement" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
CREATE INDEX IF NOT EXISTS "FileRequirement_stageId_idx" ON "FileRequirement"("stageId");
|
||||
|
||||
-- FilteringRule: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "FilteringRule" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "FilteringRule" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "FilteringRule" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
CREATE INDEX "FilteringRule_stageId_idx" ON "FilteringRule"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "FilteringRule" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "FilteringRule" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "FilteringRule" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
CREATE INDEX IF NOT EXISTS "FilteringRule_stageId_idx" ON "FilteringRule"("stageId");
|
||||
|
||||
-- FilteringResult: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "FilteringResult" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "FilteringResult" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "FilteringResult" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
DROP INDEX "FilteringResult_roundId_projectId_key";
|
||||
CREATE UNIQUE INDEX "FilteringResult_stageId_projectId_key" ON "FilteringResult"("stageId", "projectId");
|
||||
CREATE INDEX "FilteringResult_stageId_idx" ON "FilteringResult"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "FilteringResult" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "FilteringResult" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "FilteringResult" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
DROP INDEX IF EXISTS "FilteringResult_roundId_projectId_key";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "FilteringResult_stageId_projectId_key" ON "FilteringResult"("stageId", "projectId");
|
||||
CREATE INDEX IF NOT EXISTS "FilteringResult_stageId_idx" ON "FilteringResult"("stageId");
|
||||
|
||||
-- FilteringJob: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "FilteringJob" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "FilteringJob" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "FilteringJob" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
CREATE INDEX "FilteringJob_stageId_idx" ON "FilteringJob"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "FilteringJob" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "FilteringJob" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "FilteringJob" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
CREATE INDEX IF NOT EXISTS "FilteringJob_stageId_idx" ON "FilteringJob"("stageId");
|
||||
|
||||
-- AssignmentJob: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "AssignmentJob" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "AssignmentJob" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "AssignmentJob" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
CREATE INDEX "AssignmentJob_stageId_idx" ON "AssignmentJob"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "AssignmentJob" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "AssignmentJob" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "AssignmentJob" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
CREATE INDEX IF NOT EXISTS "AssignmentJob_stageId_idx" ON "AssignmentJob"("stageId");
|
||||
|
||||
-- ReminderLog: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "ReminderLog" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "ReminderLog" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "ReminderLog" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
DROP INDEX "ReminderLog_roundId_userId_type_key";
|
||||
CREATE UNIQUE INDEX "ReminderLog_stageId_userId_type_key" ON "ReminderLog"("stageId", "userId", "type");
|
||||
CREATE INDEX "ReminderLog_stageId_idx" ON "ReminderLog"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "ReminderLog" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "ReminderLog" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "ReminderLog" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
DROP INDEX IF EXISTS "ReminderLog_roundId_userId_type_key";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "ReminderLog_stageId_userId_type_key" ON "ReminderLog"("stageId", "userId", "type");
|
||||
CREATE INDEX IF NOT EXISTS "ReminderLog_stageId_idx" ON "ReminderLog"("stageId");
|
||||
|
||||
-- ConflictOfInterest: roundId NOT NULL → nullable (no stageId on this table)
|
||||
ALTER TABLE "ConflictOfInterest" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
DO $$ BEGIN ALTER TABLE "ConflictOfInterest" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
|
||||
-- EvaluationSummary: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "EvaluationSummary" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "EvaluationSummary" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "EvaluationSummary" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
DROP INDEX "EvaluationSummary_projectId_roundId_key";
|
||||
CREATE UNIQUE INDEX "EvaluationSummary_projectId_stageId_key" ON "EvaluationSummary"("projectId", "stageId");
|
||||
CREATE INDEX "EvaluationSummary_stageId_idx" ON "EvaluationSummary"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationSummary" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "EvaluationSummary" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationSummary" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
DROP INDEX IF EXISTS "EvaluationSummary_projectId_roundId_key";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "EvaluationSummary_projectId_stageId_key" ON "EvaluationSummary"("projectId", "stageId");
|
||||
CREATE INDEX IF NOT EXISTS "EvaluationSummary_stageId_idx" ON "EvaluationSummary"("stageId");
|
||||
|
||||
-- EvaluationDiscussion: roundId NOT NULL → nullable, add stageId NOT NULL
|
||||
ALTER TABLE "EvaluationDiscussion" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "EvaluationDiscussion" ADD COLUMN "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
ALTER TABLE "EvaluationDiscussion" ALTER COLUMN "stageId" DROP DEFAULT;
|
||||
DROP INDEX "EvaluationDiscussion_projectId_roundId_key";
|
||||
CREATE UNIQUE INDEX "EvaluationDiscussion_projectId_stageId_key" ON "EvaluationDiscussion"("projectId", "stageId");
|
||||
CREATE INDEX "EvaluationDiscussion_stageId_idx" ON "EvaluationDiscussion"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationDiscussion" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "EvaluationDiscussion" ADD COLUMN IF NOT EXISTS "stageId" TEXT NOT NULL DEFAULT '__placeholder__';
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationDiscussion" ALTER COLUMN "stageId" DROP DEFAULT; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
DROP INDEX IF EXISTS "EvaluationDiscussion_projectId_roundId_key";
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "EvaluationDiscussion_projectId_stageId_key" ON "EvaluationDiscussion"("projectId", "stageId");
|
||||
CREATE INDEX IF NOT EXISTS "EvaluationDiscussion_stageId_idx" ON "EvaluationDiscussion"("stageId");
|
||||
|
||||
-- Message: add stageId (nullable)
|
||||
ALTER TABLE "Message" ADD COLUMN "stageId" TEXT;
|
||||
CREATE INDEX "Message_stageId_idx" ON "Message"("stageId");
|
||||
ALTER TABLE "Message" ADD COLUMN IF NOT EXISTS "stageId" TEXT;
|
||||
CREATE INDEX IF NOT EXISTS "Message_stageId_idx" ON "Message"("stageId");
|
||||
|
||||
-- LiveVotingSession: roundId NOT NULL → nullable, add stageId (nullable, unique)
|
||||
ALTER TABLE "LiveVotingSession" ALTER COLUMN "roundId" DROP NOT NULL;
|
||||
ALTER TABLE "LiveVotingSession" ADD COLUMN "stageId" TEXT;
|
||||
CREATE UNIQUE INDEX "LiveVotingSession_stageId_key" ON "LiveVotingSession"("stageId");
|
||||
DO $$ BEGIN ALTER TABLE "LiveVotingSession" ALTER COLUMN "roundId" DROP NOT NULL; EXCEPTION WHEN others THEN NULL; END $$;
|
||||
ALTER TABLE "LiveVotingSession" ADD COLUMN IF NOT EXISTS "stageId" TEXT;
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "LiveVotingSession_stageId_key" ON "LiveVotingSession"("stageId");
|
||||
|
||||
-- =====================================================
|
||||
-- 4. FOREIGN KEY CONSTRAINTS: New tables
|
||||
-- 5. FOREIGN KEY CONSTRAINTS: New tables
|
||||
-- =====================================================
|
||||
|
||||
-- Pipeline
|
||||
ALTER TABLE "Pipeline" ADD CONSTRAINT "Pipeline_programId_fkey" FOREIGN KEY ("programId") REFERENCES "Program"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- Track
|
||||
ALTER TABLE "Track" ADD CONSTRAINT "Track_pipelineId_fkey" FOREIGN KEY ("pipelineId") REFERENCES "Pipeline"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- Stage
|
||||
ALTER TABLE "Stage" ADD CONSTRAINT "Stage_trackId_fkey" FOREIGN KEY ("trackId") REFERENCES "Track"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- StageTransition
|
||||
ALTER TABLE "StageTransition" ADD CONSTRAINT "StageTransition_fromStageId_fkey" FOREIGN KEY ("fromStageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "StageTransition" ADD CONSTRAINT "StageTransition_toStageId_fkey" FOREIGN KEY ("toStageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- ProjectStageState
|
||||
ALTER TABLE "ProjectStageState" ADD CONSTRAINT "ProjectStageState_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ProjectStageState" ADD CONSTRAINT "ProjectStageState_trackId_fkey" FOREIGN KEY ("trackId") REFERENCES "Track"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ProjectStageState" ADD CONSTRAINT "ProjectStageState_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- RoutingRule
|
||||
ALTER TABLE "RoutingRule" ADD CONSTRAINT "RoutingRule_pipelineId_fkey" FOREIGN KEY ("pipelineId") REFERENCES "Pipeline"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "RoutingRule" ADD CONSTRAINT "RoutingRule_sourceTrackId_fkey" FOREIGN KEY ("sourceTrackId") REFERENCES "Track"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
ALTER TABLE "RoutingRule" ADD CONSTRAINT "RoutingRule_destinationTrackId_fkey" FOREIGN KEY ("destinationTrackId") REFERENCES "Track"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- Cohort
|
||||
ALTER TABLE "Cohort" ADD CONSTRAINT "Cohort_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- CohortProject
|
||||
ALTER TABLE "CohortProject" ADD CONSTRAINT "CohortProject_cohortId_fkey" FOREIGN KEY ("cohortId") REFERENCES "Cohort"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "CohortProject" ADD CONSTRAINT "CohortProject_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
|
||||
-- LiveProgressCursor
|
||||
ALTER TABLE "LiveProgressCursor" ADD CONSTRAINT "LiveProgressCursor_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN ALTER TABLE "Pipeline" ADD CONSTRAINT "Pipeline_programId_fkey" FOREIGN KEY ("programId") REFERENCES "Program"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "Track" ADD CONSTRAINT "Track_pipelineId_fkey" FOREIGN KEY ("pipelineId") REFERENCES "Pipeline"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "Stage" ADD CONSTRAINT "Stage_trackId_fkey" FOREIGN KEY ("trackId") REFERENCES "Track"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "StageTransition" ADD CONSTRAINT "StageTransition_fromStageId_fkey" FOREIGN KEY ("fromStageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "StageTransition" ADD CONSTRAINT "StageTransition_toStageId_fkey" FOREIGN KEY ("toStageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "ProjectStageState" ADD CONSTRAINT "ProjectStageState_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "ProjectStageState" ADD CONSTRAINT "ProjectStageState_trackId_fkey" FOREIGN KEY ("trackId") REFERENCES "Track"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "ProjectStageState" ADD CONSTRAINT "ProjectStageState_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "RoutingRule" ADD CONSTRAINT "RoutingRule_pipelineId_fkey" FOREIGN KEY ("pipelineId") REFERENCES "Pipeline"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "RoutingRule" ADD CONSTRAINT "RoutingRule_sourceTrackId_fkey" FOREIGN KEY ("sourceTrackId") REFERENCES "Track"("id") ON DELETE SET NULL ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "RoutingRule" ADD CONSTRAINT "RoutingRule_destinationTrackId_fkey" FOREIGN KEY ("destinationTrackId") REFERENCES "Track"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "Cohort" ADD CONSTRAINT "Cohort_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "CohortProject" ADD CONSTRAINT "CohortProject_cohortId_fkey" FOREIGN KEY ("cohortId") REFERENCES "Cohort"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "CohortProject" ADD CONSTRAINT "CohortProject_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "LiveProgressCursor" ADD CONSTRAINT "LiveProgressCursor_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- =====================================================
|
||||
-- 5. FOREIGN KEY CONSTRAINTS: stageId on altered tables
|
||||
-- 6. FOREIGN KEY CONSTRAINTS: stageId on altered tables
|
||||
-- =====================================================
|
||||
|
||||
ALTER TABLE "EvaluationForm" ADD CONSTRAINT "EvaluationForm_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "GracePeriod" ADD CONSTRAINT "GracePeriod_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "FileRequirement" ADD CONSTRAINT "FileRequirement_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "FilteringRule" ADD CONSTRAINT "FilteringRule_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "FilteringResult" ADD CONSTRAINT "FilteringResult_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "FilteringJob" ADD CONSTRAINT "FilteringJob_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "AssignmentJob" ADD CONSTRAINT "AssignmentJob_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "ReminderLog" ADD CONSTRAINT "ReminderLog_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "EvaluationSummary" ADD CONSTRAINT "EvaluationSummary_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "EvaluationDiscussion" ADD CONSTRAINT "EvaluationDiscussion_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
ALTER TABLE "Message" ADD CONSTRAINT "Message_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
ALTER TABLE "LiveVotingSession" ADD CONSTRAINT "LiveVotingSession_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationForm" ADD CONSTRAINT "EvaluationForm_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "Assignment" ADD CONSTRAINT "Assignment_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "GracePeriod" ADD CONSTRAINT "GracePeriod_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "FileRequirement" ADD CONSTRAINT "FileRequirement_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "FilteringRule" ADD CONSTRAINT "FilteringRule_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "FilteringResult" ADD CONSTRAINT "FilteringResult_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "FilteringJob" ADD CONSTRAINT "FilteringJob_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "AssignmentJob" ADD CONSTRAINT "AssignmentJob_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "ReminderLog" ADD CONSTRAINT "ReminderLog_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationSummary" ADD CONSTRAINT "EvaluationSummary_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "EvaluationDiscussion" ADD CONSTRAINT "EvaluationDiscussion_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "Message" ADD CONSTRAINT "Message_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE SET NULL ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
DO $$ BEGIN ALTER TABLE "LiveVotingSession" ADD CONSTRAINT "LiveVotingSession_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
||||
-- =====================================================
|
||||
-- 6. SpecialAward: add trackId (nullable, unique)
|
||||
-- 7. SpecialAward: add trackId (nullable, unique)
|
||||
-- =====================================================
|
||||
|
||||
ALTER TABLE "SpecialAward" ADD COLUMN "trackId" TEXT;
|
||||
CREATE UNIQUE INDEX "SpecialAward_trackId_key" ON "SpecialAward"("trackId");
|
||||
ALTER TABLE "SpecialAward" ADD CONSTRAINT "SpecialAward_trackId_fkey" FOREIGN KEY ("trackId") REFERENCES "Track"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|
||||
ALTER TABLE "SpecialAward" ADD COLUMN IF NOT EXISTS "trackId" TEXT;
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS "SpecialAward_trackId_key" ON "SpecialAward"("trackId");
|
||||
DO $$ BEGIN ALTER TABLE "SpecialAward" ADD CONSTRAINT "SpecialAward_trackId_fkey" FOREIGN KEY ("trackId") REFERENCES "Track"("id") ON DELETE SET NULL ON UPDATE CASCADE; EXCEPTION WHEN duplicate_object THEN NULL; END $$;
|
||||
|
|
|
|||
Loading…
Reference in New Issue