Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
-- Pure naming rename. Tables → new names; PKs / FKs / indexes get renamed
-- to match Prisma's naming convention. `ALTER TABLE … RENAME TO` preserves
-- rows, FK data, and RLS policies (they are bound to table OIDs, not names)
-- — the `20260507000000_rename_user_role_to_permission` precedent did the
-- same. Historical entityType strings on AuditLog and NotificationEvent are
-- rewritten in step 5 so audit queries stay uniform.

-- 1. Table renames.
ALTER TABLE "ProgrammeTemplate" RENAME TO "EventTemplate";
ALTER TABLE "ProgrammeTemplatePart" RENAME TO "TemplatePart";
ALTER TABLE "ProgrammeTemplateServiceRole" RENAME TO "TemplateServiceRole";
ALTER TABLE "ProgrammePartAssignment" RENAME TO "EventPart";
ALTER TABLE "ProgrammeServiceRoleAssignment" RENAME TO "EventServiceRole";
ALTER TABLE "ProgrammeTemplateResponsible" RENAME TO "TemplateResponsible";
ALTER TABLE "ProgrammeTemplatePartAllowedRole" RENAME TO "TemplatePartAllowedRole";
ALTER TABLE "ProgrammePartAssignmentAllowedRole" RENAME TO "EventPartAllowedRole";
ALTER TABLE "ProgrammeTemplateServiceRoleAllowedRole" RENAME TO "TemplateServiceRoleAllowedRole";
ALTER TABLE "ProgrammeServiceRoleAssignmentAllowedRole" RENAME TO "EventServiceRoleAllowedRole";

-- 2. Primary key constraint renames.
ALTER TABLE "EventTemplate" RENAME CONSTRAINT "ProgrammeTemplate_pkey" TO "EventTemplate_pkey";
ALTER TABLE "TemplatePart" RENAME CONSTRAINT "ProgrammeTemplatePart_pkey" TO "TemplatePart_pkey";
ALTER TABLE "TemplateServiceRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRole_pkey" TO "TemplateServiceRole_pkey";
ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_pkey" TO "EventPart_pkey";
ALTER TABLE "EventServiceRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignment_pkey" TO "EventServiceRole_pkey";
ALTER TABLE "TemplateResponsible" RENAME CONSTRAINT "ProgrammeTemplateResponsible_pkey" TO "TemplateResponsible_pkey";
ALTER TABLE "TemplatePartAllowedRole" RENAME CONSTRAINT "ProgrammeTemplatePartAllowedRole_pkey" TO "TemplatePartAllowedRole_pkey";
ALTER TABLE "EventPartAllowedRole" RENAME CONSTRAINT "ProgrammePartAssignmentAllowedRole_pkey" TO "EventPartAllowedRole_pkey";
ALTER TABLE "TemplateServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRoleAllowedRole_pkey" TO "TemplateServiceRoleAllowedRole_pkey";
ALTER TABLE "EventServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignmentAllowedRole_pkey" TO "EventServiceRoleAllowedRole_pkey";

-- 3. Foreign key constraint renames.
ALTER TABLE "EventTemplate" RENAME CONSTRAINT "ProgrammeTemplate_congregationId_fkey" TO "EventTemplate_congregationId_fkey";

ALTER TABLE "TemplatePart" RENAME CONSTRAINT "ProgrammeTemplatePart_congregationId_fkey" TO "TemplatePart_congregationId_fkey";
ALTER TABLE "TemplatePart" RENAME CONSTRAINT "ProgrammeTemplatePart_templateId_fkey" TO "TemplatePart_templateId_fkey";

ALTER TABLE "TemplateServiceRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRole_congregationId_fkey" TO "TemplateServiceRole_congregationId_fkey";
ALTER TABLE "TemplateServiceRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRole_templateId_fkey" TO "TemplateServiceRole_templateId_fkey";

ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_assigneeId_fkey" TO "EventPart_assigneeId_fkey";
ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_assistantId_fkey" TO "EventPart_assistantId_fkey";
ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_congregationId_fkey" TO "EventPart_congregationId_fkey";
ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_eventId_fkey" TO "EventPart_eventId_fkey";
ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_externalSpeakerId_fkey" TO "EventPart_externalSpeakerId_fkey";
ALTER TABLE "EventPart" RENAME CONSTRAINT "ProgrammePartAssignment_partId_fkey" TO "EventPart_partId_fkey";

ALTER TABLE "EventServiceRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignment_assigneeId_fkey" TO "EventServiceRole_assigneeId_fkey";
ALTER TABLE "EventServiceRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignment_congregationId_fkey" TO "EventServiceRole_congregationId_fkey";
ALTER TABLE "EventServiceRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignment_eventId_fkey" TO "EventServiceRole_eventId_fkey";
ALTER TABLE "EventServiceRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignment_serviceRoleId_fkey" TO "EventServiceRole_serviceRoleId_fkey";

ALTER TABLE "TemplateResponsible" RENAME CONSTRAINT "ProgrammeTemplateResponsible_congregationId_fkey" TO "TemplateResponsible_congregationId_fkey";
ALTER TABLE "TemplateResponsible" RENAME CONSTRAINT "ProgrammeTemplateResponsible_templateId_fkey" TO "TemplateResponsible_templateId_fkey";
ALTER TABLE "TemplateResponsible" RENAME CONSTRAINT "ProgrammeTemplateResponsible_userId_fkey" TO "TemplateResponsible_userId_fkey";

ALTER TABLE "TemplatePartAllowedRole" RENAME CONSTRAINT "ProgrammeTemplatePartAllowedRole_congregationId_fkey" TO "TemplatePartAllowedRole_congregationId_fkey";
ALTER TABLE "TemplatePartAllowedRole" RENAME CONSTRAINT "ProgrammeTemplatePartAllowedRole_partId_fkey" TO "TemplatePartAllowedRole_partId_fkey";
ALTER TABLE "TemplatePartAllowedRole" RENAME CONSTRAINT "ProgrammeTemplatePartAllowedRole_roleId_fkey" TO "TemplatePartAllowedRole_roleId_fkey";

ALTER TABLE "EventPartAllowedRole" RENAME CONSTRAINT "ProgrammePartAssignmentAllowedRole_assignmentId_fkey" TO "EventPartAllowedRole_assignmentId_fkey";
ALTER TABLE "EventPartAllowedRole" RENAME CONSTRAINT "ProgrammePartAssignmentAllowedRole_congregationId_fkey" TO "EventPartAllowedRole_congregationId_fkey";
ALTER TABLE "EventPartAllowedRole" RENAME CONSTRAINT "ProgrammePartAssignmentAllowedRole_roleId_fkey" TO "EventPartAllowedRole_roleId_fkey";

ALTER TABLE "TemplateServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRoleAllowedRole_congregationId_fkey" TO "TemplateServiceRoleAllowedRole_congregationId_fkey";
ALTER TABLE "TemplateServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRoleAllowedRole_roleId_fkey" TO "TemplateServiceRoleAllowedRole_roleId_fkey";
ALTER TABLE "TemplateServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeTemplateServiceRoleAllowedRole_serviceRoleId_fkey" TO "TemplateServiceRoleAllowedRole_serviceRoleId_fkey";

ALTER TABLE "EventServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignmentAllowedRole_assignmentId_fkey" TO "EventServiceRoleAllowedRole_assignmentId_fkey";
ALTER TABLE "EventServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignmentAllowedRole_congregationId_fkey" TO "EventServiceRoleAllowedRole_congregationId_fkey";
ALTER TABLE "EventServiceRoleAllowedRole" RENAME CONSTRAINT "ProgrammeServiceRoleAssignmentAllowedRole_roleId_fkey" TO "EventServiceRoleAllowedRole_roleId_fkey";

-- 4. Index renames.
ALTER INDEX "ProgrammeTemplate_id_congregationId_key" RENAME TO "EventTemplate_id_congregationId_key";
ALTER INDEX "ProgrammeTemplate_key_congregationId_key" RENAME TO "EventTemplate_key_congregationId_key";

ALTER INDEX "ProgrammeTemplatePart_id_congregationId_key" RENAME TO "TemplatePart_id_congregationId_key";

ALTER INDEX "ProgrammeTemplateServiceRole_id_congregationId_key" RENAME TO "TemplateServiceRole_id_congregationId_key";

ALTER INDEX "ProgrammePartAssignment_externalSpeakerId_idx" RENAME TO "EventPart_externalSpeakerId_idx";
ALTER INDEX "ProgrammePartAssignment_id_congregationId_key" RENAME TO "EventPart_id_congregationId_key";

ALTER INDEX "ProgrammeServiceRoleAssignment_id_congregationId_key" RENAME TO "EventServiceRole_id_congregationId_key";

ALTER INDEX "ProgrammeTemplateResponsible_id_congregationId_key" RENAME TO "TemplateResponsible_id_congregationId_key";
ALTER INDEX "ProgrammeTemplateResponsible_templateId_congregationId_key" RENAME TO "TemplateResponsible_templateId_congregationId_key";

ALTER INDEX "ProgrammeTemplatePartAllowedRole_congregationId_idx" RENAME TO "TemplatePartAllowedRole_congregationId_idx";
ALTER INDEX "ProgrammeTemplatePartAllowedRole_roleId_idx" RENAME TO "TemplatePartAllowedRole_roleId_idx";

ALTER INDEX "ProgrammePartAssignmentAllowedRole_congregationId_idx" RENAME TO "EventPartAllowedRole_congregationId_idx";
ALTER INDEX "ProgrammePartAssignmentAllowedRole_roleId_idx" RENAME TO "EventPartAllowedRole_roleId_idx";

ALTER INDEX "ProgrammeTemplateServiceRoleAllowedRole_congregationId_idx" RENAME TO "TemplateServiceRoleAllowedRole_congregationId_idx";
ALTER INDEX "ProgrammeTemplateServiceRoleAllowedRole_roleId_idx" RENAME TO "TemplateServiceRoleAllowedRole_roleId_idx";

ALTER INDEX "ProgrammeServiceRoleAssignmentAllowedRole_congregationId_idx" RENAME TO "EventServiceRoleAllowedRole_congregationId_idx";
ALTER INDEX "ProgrammeServiceRoleAssignmentAllowedRole_roleId_idx" RENAME TO "EventServiceRoleAllowedRole_roleId_idx";

-- 5. Rewrite historical entityType strings so audit and notification
-- queries don't have to reason about both names forever.
UPDATE "AuditLog" SET "entityType" = 'EventTemplate' WHERE "entityType" = 'ProgrammeTemplate';
UPDATE "AuditLog" SET "entityType" = 'TemplatePart' WHERE "entityType" = 'ProgrammeTemplatePart';
UPDATE "AuditLog" SET "entityType" = 'TemplateServiceRole' WHERE "entityType" = 'ProgrammeTemplateServiceRole';
UPDATE "AuditLog" SET "entityType" = 'EventPart' WHERE "entityType" = 'ProgrammePartAssignment';
UPDATE "AuditLog" SET "entityType" = 'EventServiceRole' WHERE "entityType" = 'ProgrammeServiceRoleAssignment';
UPDATE "AuditLog" SET "entityType" = 'TemplateResponsible' WHERE "entityType" = 'ProgrammeTemplateResponsible';

UPDATE "NotificationEvent" SET "entityType" = 'EventPart' WHERE "entityType" = 'ProgrammePartAssignment';
UPDATE "NotificationEvent" SET "entityType" = 'EventServiceRole' WHERE "entityType" = 'ProgrammeServiceRoleAssignment';
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
-- Follow-up cleanup for `20260720350000_rename_programme_to_event`:
--
-- 1. Rewrites `NotificationEvent.debounceKey` for still-pending rows so the
-- new event-part debounce lookup (`buildDebounceKey('EventPart', ...)`)
-- matches pre-rename entries. Without this, publishers reassigned in the
-- 30-min post-deploy window would get duplicated "assigned" mails and/or
-- out-of-order "unassigned" mails because the cancel/replace path filters
-- by `debounceKey`, which was computed from the old entityType string.
--
-- 2. Renames the FK columns on the two join tables from `assignmentId` (the
-- original `ProgrammePartAssignmentAllowedRole` and
-- `ProgrammeServiceRoleAssignmentAllowedRole` column) to the target model
-- name (`eventPartId` / `eventServiceRoleId`). Keeps table/PK/FK/index
-- rename consistent with the model rename.

-- 1. NotificationEvent.debounceKey rewrite — only for pending rows (sent
-- rows are historical and get auto-cleaned in 7-30 days).
UPDATE "NotificationEvent"
SET "debounceKey" = 'EventPart:' || substring("debounceKey" from length('ProgrammePartAssignment:') + 1)
WHERE "status" = 'pending' AND "debounceKey" LIKE 'ProgrammePartAssignment:%';

UPDATE "NotificationEvent"
SET "debounceKey" = 'EventServiceRole:' || substring("debounceKey" from length('ProgrammeServiceRoleAssignment:') + 1)
WHERE "status" = 'pending' AND "debounceKey" LIKE 'ProgrammeServiceRoleAssignment:%';

-- 2. Column renames on the two join tables. `ALTER TABLE ... RENAME COLUMN`
-- preserves indexes, constraints, and RLS policies bound to the column
-- since they reference the column by OID.
ALTER TABLE "EventPartAllowedRole" RENAME COLUMN "assignmentId" TO "eventPartId";
ALTER TABLE "EventServiceRoleAllowedRole" RENAME COLUMN "assignmentId" TO "eventServiceRoleId";

-- 3. Rename the FK constraints to match the new column names.
ALTER TABLE "EventPartAllowedRole"
RENAME CONSTRAINT "EventPartAllowedRole_assignmentId_fkey" TO "EventPartAllowedRole_eventPartId_fkey";
ALTER TABLE "EventServiceRoleAllowedRole"
RENAME CONSTRAINT "EventServiceRoleAllowedRole_assignmentId_fkey" TO "EventServiceRoleAllowedRole_eventServiceRoleId_fkey";
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
-- Renames the "ServiceRole" family to "ServicePart" so the "role" word is
-- unambiguously reserved for permission Roles. The four join tables in this
-- feature (Template/Event × Part/ServicePart × AllowedRole) now all read
-- consistently: `<parent>AllowedRole` means "which Roles are allowed on this
-- part slot".
--
-- Same shape as 20260720350000: ALTER TABLE ... RENAME preserves rows, FK
-- data, indexes, and RLS policies (bound to table OID, not name). Only the
-- catalog identifiers change.

-- 1. Rename tables.
ALTER TABLE "TemplateServiceRole" RENAME TO "TemplateServicePart";
ALTER TABLE "EventServiceRole" RENAME TO "EventServicePart";
ALTER TABLE "TemplateServiceRoleAllowedRole" RENAME TO "TemplateServicePartAllowedRole";
ALTER TABLE "EventServiceRoleAllowedRole" RENAME TO "EventServicePartAllowedRole";

-- 2. Rename FK columns that referenced the old model names.
ALTER TABLE "EventServicePart" RENAME COLUMN "serviceRoleId" TO "servicePartId";
ALTER TABLE "TemplateServicePartAllowedRole" RENAME COLUMN "serviceRoleId" TO "servicePartId";
ALTER TABLE "EventServicePartAllowedRole" RENAME COLUMN "eventServiceRoleId" TO "eventServicePartId";

-- 3. Rename primary-key constraints.
ALTER TABLE "TemplateServicePart" RENAME CONSTRAINT "TemplateServiceRole_pkey" TO "TemplateServicePart_pkey";
ALTER TABLE "EventServicePart" RENAME CONSTRAINT "EventServiceRole_pkey" TO "EventServicePart_pkey";
ALTER TABLE "TemplateServicePartAllowedRole" RENAME CONSTRAINT "TemplateServiceRoleAllowedRole_pkey" TO "TemplateServicePartAllowedRole_pkey";
ALTER TABLE "EventServicePartAllowedRole" RENAME CONSTRAINT "EventServiceRoleAllowedRole_pkey" TO "EventServicePartAllowedRole_pkey";

-- 4. Rename foreign-key constraints to match Prisma's `NewName_col_fkey`
-- convention. Missing renames here only cause cosmetic drift in
-- `\d`; queries still work because Postgres resolves FKs by OID.
ALTER TABLE "TemplateServicePart"
RENAME CONSTRAINT "TemplateServiceRole_templateId_fkey" TO "TemplateServicePart_templateId_fkey";
ALTER TABLE "TemplateServicePart"
RENAME CONSTRAINT "TemplateServiceRole_congregationId_fkey" TO "TemplateServicePart_congregationId_fkey";

ALTER TABLE "EventServicePart"
RENAME CONSTRAINT "EventServiceRole_eventId_fkey" TO "EventServicePart_eventId_fkey";
ALTER TABLE "EventServicePart"
RENAME CONSTRAINT "EventServiceRole_serviceRoleId_fkey" TO "EventServicePart_servicePartId_fkey";
ALTER TABLE "EventServicePart"
RENAME CONSTRAINT "EventServiceRole_assigneeId_fkey" TO "EventServicePart_assigneeId_fkey";
ALTER TABLE "EventServicePart"
RENAME CONSTRAINT "EventServiceRole_congregationId_fkey" TO "EventServicePart_congregationId_fkey";

ALTER TABLE "TemplateServicePartAllowedRole"
RENAME CONSTRAINT "TemplateServiceRoleAllowedRole_serviceRoleId_fkey" TO "TemplateServicePartAllowedRole_servicePartId_fkey";
ALTER TABLE "TemplateServicePartAllowedRole"
RENAME CONSTRAINT "TemplateServiceRoleAllowedRole_roleId_fkey" TO "TemplateServicePartAllowedRole_roleId_fkey";
ALTER TABLE "TemplateServicePartAllowedRole"
RENAME CONSTRAINT "TemplateServiceRoleAllowedRole_congregationId_fkey" TO "TemplateServicePartAllowedRole_congregationId_fkey";

ALTER TABLE "EventServicePartAllowedRole"
RENAME CONSTRAINT "EventServiceRoleAllowedRole_eventServiceRoleId_fkey" TO "EventServicePartAllowedRole_eventServicePartId_fkey";
ALTER TABLE "EventServicePartAllowedRole"
RENAME CONSTRAINT "EventServiceRoleAllowedRole_roleId_fkey" TO "EventServicePartAllowedRole_roleId_fkey";
ALTER TABLE "EventServicePartAllowedRole"
RENAME CONSTRAINT "EventServiceRoleAllowedRole_congregationId_fkey" TO "EventServicePartAllowedRole_congregationId_fkey";

-- 5. Rename unique indexes.
ALTER INDEX "TemplateServiceRole_id_congregationId_key" RENAME TO "TemplateServicePart_id_congregationId_key";
ALTER INDEX "EventServiceRole_id_congregationId_key" RENAME TO "EventServicePart_id_congregationId_key";

-- 6. Rewrite historical entityType strings so AuditLog readers see the new
-- model name for every past mutation (mirrors the Programme→Event fix in
-- 20260720350000).
UPDATE "AuditLog" SET "entityType" = 'TemplateServicePart' WHERE "entityType" = 'TemplateServiceRole';
UPDATE "AuditLog" SET "entityType" = 'EventServicePart' WHERE "entityType" = 'EventServiceRole';
UPDATE "NotificationEvent" SET "entityType" = 'EventServicePart' WHERE "entityType" = 'EventServiceRole';

-- 7. Rewrite still-pending NotificationEvent debounce keys so the new
-- dispatchAssignmentDiffs lookup (`buildDebounceKey('EventServicePart',
-- ...)`) matches entries queued before the deploy. Sent rows are
-- historical and get pruned in 7-30 days.
UPDATE "NotificationEvent"
SET "debounceKey" = 'EventServicePart:' || substring("debounceKey" from length('EventServiceRole:') + 1)
WHERE "status" = 'pending' AND "debounceKey" LIKE 'EventServiceRole:%';
Loading