From c5ec3396b28749df94c79ec121b0981faa2ccabf Mon Sep 17 00:00:00 2001 From: Marcel Raddatz Date: Fri, 10 Apr 2026 21:51:19 +0200 Subject: [PATCH] fix(migration): deduplicate active invites before creating unique index in V026 Dev databases that accumulated multiple pending invites before V026 was written would fail to create uq_household_invite_active. Added a cleanup UPDATE that marks all-but-the-latest invite per household as invalidated before the index is created. Co-Authored-By: Claude Sonnet 4.6 --- .../db/migration/V026__add_invite_invalidated_at.sql | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/backend/src/main/resources/db/migration/V026__add_invite_invalidated_at.sql b/backend/src/main/resources/db/migration/V026__add_invite_invalidated_at.sql index c9a5511..f210870 100644 --- a/backend/src/main/resources/db/migration/V026__add_invite_invalidated_at.sql +++ b/backend/src/main/resources/db/migration/V026__add_invite_invalidated_at.sql @@ -1,6 +1,17 @@ ALTER TABLE household_invite ADD COLUMN invalidated_at timestamptz; +-- Mark all but the most-recent invite per household as invalidated, +-- so the unique partial index below can be created on dev databases +-- that accumulated multiple pending invites before this migration was added. +UPDATE household_invite +SET invalidated_at = NOW() +WHERE id NOT IN ( + SELECT DISTINCT ON (household_id) id + FROM household_invite + ORDER BY household_id, expires_at DESC +); + CREATE UNIQUE INDEX uq_household_invite_active ON household_invite (household_id) WHERE invalidated_at IS NULL;