Selection of multiple officials and role sub-categories
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
-- 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;
|
||||
Reference in New Issue
Block a user