From 3d1fe85d62c24f58def26bfa742e0bb1f3f5ba97 Mon Sep 17 00:00:00 2001 From: Lucas Smith Date: Thu, 13 Nov 2025 10:43:11 +1100 Subject: [PATCH] fix: add foreign key indexes (#2184) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Can't believe we missed some of these ☠️ --- .../migration.sql | 41 +++++++++++++++++++ packages/prisma/schema.prisma | 19 +++++++++ 2 files changed, 60 insertions(+) create mode 100644 packages/prisma/migrations/20251112224336_add_database_indexes/migration.sql diff --git a/packages/prisma/migrations/20251112224336_add_database_indexes/migration.sql b/packages/prisma/migrations/20251112224336_add_database_indexes/migration.sql new file mode 100644 index 000000000..3fbbed744 --- /dev/null +++ b/packages/prisma/migrations/20251112224336_add_database_indexes/migration.sql @@ -0,0 +1,41 @@ +-- CreateIndex +CREATE INDEX "Envelope_folderId_idx" ON "Envelope"("folderId"); + +-- CreateIndex +CREATE INDEX "Envelope_teamId_idx" ON "Envelope"("teamId"); + +-- CreateIndex +CREATE INDEX "Envelope_userId_idx" ON "Envelope"("userId"); + +-- CreateIndex +CREATE INDEX "EnvelopeAttachment_envelopeId_idx" ON "EnvelopeAttachment"("envelopeId"); + +-- CreateIndex +CREATE INDEX "EnvelopeItem_envelopeId_idx" ON "EnvelopeItem"("envelopeId"); + +-- CreateIndex +CREATE INDEX "Field_envelopeItemId_idx" ON "Field"("envelopeItemId"); + +-- CreateIndex +CREATE INDEX "OrganisationGroup_organisationId_idx" ON "OrganisationGroup"("organisationId"); + +-- CreateIndex +CREATE INDEX "OrganisationGroupMember_groupId_idx" ON "OrganisationGroupMember"("groupId"); + +-- CreateIndex +CREATE INDEX "OrganisationGroupMember_organisationMemberId_idx" ON "OrganisationGroupMember"("organisationMemberId"); + +-- CreateIndex +CREATE INDEX "Session_userId_idx" ON "Session"("userId"); + +-- CreateIndex +CREATE INDEX "Session_sessionToken_idx" ON "Session"("sessionToken"); + +-- CreateIndex +CREATE INDEX "Team_organisationId_idx" ON "Team"("organisationId"); + +-- CreateIndex +CREATE INDEX "TeamGroup_teamId_idx" ON "TeamGroup"("teamId"); + +-- CreateIndex +CREATE INDEX "TeamGroup_organisationGroupId_idx" ON "TeamGroup"("organisationGroupId"); diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index 6cf6ecfe8..09e770e36 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -319,6 +319,9 @@ model Session { updatedAt DateTime @updatedAt user User? @relation(fields: [userId], references: [id], onDelete: Cascade) + + @@index([userId]) + @@index([sessionToken]) } enum DocumentStatus { @@ -426,6 +429,10 @@ model Envelope { documentMeta DocumentMeta @relation(fields: [documentMetaId], references: [id]) envelopeAttachments EnvelopeAttachment[] + + @@index([folderId]) + @@index([teamId]) + @@index([userId]) } model EnvelopeItem { @@ -444,6 +451,7 @@ model EnvelopeItem { field Field[] @@unique([documentDataId]) + @@index([envelopeId]) } model DocumentAuditLog { @@ -526,6 +534,8 @@ model EnvelopeAttachment { envelopeId String envelope Envelope @relation(fields: [envelopeId], references: [id], onDelete: Cascade) + + @@index([envelopeId]) } enum ReadStatus { @@ -613,6 +623,7 @@ model Field { fieldMeta Json? /// [FieldMeta] @zod.custom.use(ZFieldMetaNotOptionalSchema) @@index([envelopeId]) + @@index([envelopeItemId]) @@index([recipientId]) } @@ -728,6 +739,8 @@ model OrganisationGroup { organisationGroupMembers OrganisationGroupMember[] teamGroups TeamGroup[] + + @@index([organisationId]) } model OrganisationGroupMember { @@ -740,6 +753,8 @@ model OrganisationGroupMember { organisationMemberId String @@unique([organisationMemberId, groupId]) + @@index([groupId]) + @@index([organisationMemberId]) } model TeamGroup { @@ -754,6 +769,8 @@ model TeamGroup { team Team @relation(fields: [teamId], references: [id], onDelete: Cascade) @@unique([teamId, organisationGroupId]) + @@index([teamId]) + @@index([organisationGroupId]) } enum OrganisationGroupType { @@ -865,6 +882,8 @@ model Team { teamGlobalSettingsId String @unique teamGlobalSettings TeamGlobalSettings @relation(fields: [teamGlobalSettingsId], references: [id], onDelete: Cascade) + + @@index([organisationId]) } model TeamEmail {