Files
CRM_Montzar/apps/api/prisma/migrations/20261003150000_activity_assignees/migration.sql
T

36 lines
1.1 KiB
SQL

-- Multi-assignee support for activities (implicit many-to-many)
CREATE TABLE IF NOT EXISTS "_ActivityAssignees" (
"A" TEXT NOT NULL,
"B" TEXT NOT NULL
);
CREATE UNIQUE INDEX IF NOT EXISTS "_ActivityAssignees_AB_unique" ON "_ActivityAssignees"("A", "B");
CREATE INDEX IF NOT EXISTS "_ActivityAssignees_B_index" ON "_ActivityAssignees"("B");
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint WHERE conname = '_ActivityAssignees_A_fkey'
) THEN
ALTER TABLE "_ActivityAssignees"
ADD CONSTRAINT "_ActivityAssignees_A_fkey"
FOREIGN KEY ("A") REFERENCES "Activity"("id")
ON DELETE CASCADE ON UPDATE CASCADE;
END IF;
IF NOT EXISTS (
SELECT 1 FROM pg_constraint WHERE conname = '_ActivityAssignees_B_fkey'
) THEN
ALTER TABLE "_ActivityAssignees"
ADD CONSTRAINT "_ActivityAssignees_B_fkey"
FOREIGN KEY ("B") REFERENCES "User"("id")
ON DELETE CASCADE ON UPDATE CASCADE;
END IF;
END $$;
-- Backfill from legacy single assigneeId
INSERT INTO "_ActivityAssignees" ("A", "B")
SELECT a."id", a."assigneeId"
FROM "Activity" a
WHERE a."assigneeId" IS NOT NULL
ON CONFLICT DO NOTHING;