diff --git a/packages/prisma/migrations/20240924112248_booking_reference_null_credential_on_delete/migration.sql b/packages/prisma/migrations/20240924112248_booking_reference_null_credential_on_delete/migration.sql new file mode 100644 index 0000000000..4e01cc2b92 --- /dev/null +++ b/packages/prisma/migrations/20240924112248_booking_reference_null_credential_on_delete/migration.sql @@ -0,0 +1,11 @@ +-- DropIndex +DROP INDEX "BookingReference_credentialId_idx"; + +-- Remove disconnected Credentials from bookingReference to prevent foreign key constraint error +UPDATE "BookingReference" +SET "credentialId" = NULL +WHERE "credentialId" IS NOT NULL +AND "credentialId" NOT IN (SELECT "id" FROM "Credential"); + +-- AddForeignKey +ALTER TABLE "BookingReference" ADD CONSTRAINT "BookingReference_credentialId_fkey" FOREIGN KEY ("credentialId") REFERENCES "Credential"("id") ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/packages/prisma/schema.prisma b/packages/prisma/schema.prisma index bf8b4ae56e..6421340b3e 100644 --- a/packages/prisma/schema.prisma +++ b/packages/prisma/schema.prisma @@ -183,6 +183,7 @@ model Credential { selectedCalendars SelectedCalendar[] invalid Boolean? @default(false) CalendarCache CalendarCache[] + references BookingReference[] @@index([userId]) @@index([appId]) @@ -533,10 +534,11 @@ model BookingReference { bookingId Int? externalCalendarId String? deleted Boolean? - credentialId Int? + + credential Credential? @relation(fields: [credentialId], references: [id], onDelete: SetNull) + credentialId Int? @@index([bookingId]) - @@index([credentialId]) @@index([type]) @@index([uid]) }