Selection of multiple officials and role sub-categories

This commit is contained in:
2026-10-03 13:16:13 +03:30
parent 9f97371391
commit 3b128bd980
14 changed files with 904 additions and 95 deletions
@@ -0,0 +1,17 @@
-- OrgRole hierarchy (parent / child sub-roles)
ALTER TABLE "OrgRole" ADD COLUMN IF NOT EXISTS "parentId" TEXT;
CREATE INDEX IF NOT EXISTS "OrgRole_parentId_idx" ON "OrgRole"("parentId");
CREATE INDEX IF NOT EXISTS "OrgRole_organizationId_parentId_idx" ON "OrgRole"("organizationId", "parentId");
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_constraint WHERE conname = 'OrgRole_parentId_fkey'
) THEN
ALTER TABLE "OrgRole"
ADD CONSTRAINT "OrgRole_parentId_fkey"
FOREIGN KEY ("parentId") REFERENCES "OrgRole"("id")
ON DELETE RESTRICT ON UPDATE CASCADE;
END IF;
END $$;
@@ -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;