From 8878a13f4fc4868a2ba8ba5cdb3e9a0616d6b5c4 Mon Sep 17 00:00:00 2001 From: Emmy D'Anello Date: Sat, 14 Dec 2024 13:01:11 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20comportements=20en=20cas=20de=20suppres?= =?UTF-8?q?ion=20d'un=20=C3=A9l=C3=A9ment=20li=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20241214115916_on_delete/migration.sql | 41 +++++++++++++++++++ server/prisma/schema.prisma | 28 ++++++------- 2 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 server/prisma/migrations/20241214115916_on_delete/migration.sql diff --git a/server/prisma/migrations/20241214115916_on_delete/migration.sql b/server/prisma/migrations/20241214115916_on_delete/migration.sql new file mode 100644 index 0000000..2408524 --- /dev/null +++ b/server/prisma/migrations/20241214115916_on_delete/migration.sql @@ -0,0 +1,41 @@ +-- DropForeignKey +ALTER TABLE "ChallengeAction" DROP CONSTRAINT "ChallengeAction_challengeId_fkey"; + +-- DropForeignKey +ALTER TABLE "Geolocation" DROP CONSTRAINT "Geolocation_playerId_fkey"; + +-- DropForeignKey +ALTER TABLE "MoneyUpdate" DROP CONSTRAINT "MoneyUpdate_actionId_fkey"; + +-- DropForeignKey +ALTER TABLE "MoneyUpdate" DROP CONSTRAINT "MoneyUpdate_runId_fkey"; + +-- DropForeignKey +ALTER TABLE "MoneyUpdate" DROP CONSTRAINT "MoneyUpdate_tripId_fkey"; + +-- DropForeignKey +ALTER TABLE "PlayerRun" DROP CONSTRAINT "PlayerRun_gameId_fkey"; + +-- DropForeignKey +ALTER TABLE "PlayerRun" DROP CONSTRAINT "PlayerRun_runnerId_fkey"; + +-- AddForeignKey +ALTER TABLE "PlayerRun" ADD CONSTRAINT "PlayerRun_gameId_fkey" FOREIGN KEY ("gameId") REFERENCES "Game"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "PlayerRun" ADD CONSTRAINT "PlayerRun_runnerId_fkey" FOREIGN KEY ("runnerId") REFERENCES "Player"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "Geolocation" ADD CONSTRAINT "Geolocation_playerId_fkey" FOREIGN KEY ("playerId") REFERENCES "Player"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "ChallengeAction" ADD CONSTRAINT "ChallengeAction_challengeId_fkey" FOREIGN KEY ("challengeId") REFERENCES "Challenge"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MoneyUpdate" ADD CONSTRAINT "MoneyUpdate_actionId_fkey" FOREIGN KEY ("actionId") REFERENCES "ChallengeAction"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MoneyUpdate" ADD CONSTRAINT "MoneyUpdate_tripId_fkey" FOREIGN KEY ("tripId") REFERENCES "TrainTrip"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "MoneyUpdate" ADD CONSTRAINT "MoneyUpdate_runId_fkey" FOREIGN KEY ("runId") REFERENCES "PlayerRun"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index 8b2570f..d0f2d9a 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -12,7 +12,7 @@ model Player { name String @unique password String money Int @default(0) - activeChallenge ChallengeAction? @relation("ActiveChallenge", fields: [activeChallengeId], references: [id]) + activeChallenge ChallengeAction? @relation("ActiveChallenge", fields: [activeChallengeId], references: [id], onDelete: SetNull) activeChallengeId Int? @unique actions ChallengeAction[] geolocations Geolocation[] @@ -24,17 +24,17 @@ model Player { model Game { id Int @id @default(autoincrement()) started Boolean @default(false) - currentRun PlayerRun? @relation("CurrentRun", fields: [currentRunId], references: [id]) + currentRun PlayerRun? @relation("CurrentRun", fields: [currentRunId], references: [id], onDelete: SetNull) currentRunId Int? @unique runs PlayerRun[] @relation("GameRuns") } model PlayerRun { id Int @id @default(autoincrement()) - game Game @relation("GameRuns", fields: [gameId], references: [id]) + game Game @relation("GameRuns", fields: [gameId], references: [id], onDelete: Cascade) runningGame Game? @relation("CurrentRun") gameId Int - runner Player @relation(fields: [runnerId], references: [id]) + runner Player @relation(fields: [runnerId], references: [id], onDelete: Cascade) runnerId Int start DateTime @default(now()) @db.Timestamptz(3) end DateTime? @db.Timestamptz(3) @@ -45,7 +45,7 @@ model PlayerRun { model Geolocation { id Int @id @default(autoincrement()) - player Player @relation(fields: [playerId], references: [id]) + player Player @relation(fields: [playerId], references: [id], onDelete: Cascade) playerId Int longitude Float latitude Float @@ -66,16 +66,16 @@ model Challenge { model ChallengeAction { id Int @id @default(autoincrement()) - player Player @relation(fields: [playerId], references: [id]) + player Player @relation(fields: [playerId], references: [id], onDelete: Restrict) playerId Int - challenge Challenge @relation(fields: [challengeId], references: [id]) + challenge Challenge @relation(fields: [challengeId], references: [id], onDelete: Cascade) challengeId Int @unique success Boolean @default(false) start DateTime @default(now()) @db.Timestamptz(3) end DateTime? @db.Timestamptz(3) penaltyStart DateTime? @db.Timestamptz(3) penaltyEnd DateTime? @db.Timestamptz(3) - run PlayerRun @relation(fields: [runId], references: [id]) + run PlayerRun @relation(fields: [runId], references: [id], onDelete: Restrict) runId Int activePlayer Player? @relation("ActiveChallenge") moneyUpdate MoneyUpdate? @@ -83,7 +83,7 @@ model ChallengeAction { model TrainTrip { id String @id - player Player @relation(fields: [playerId], references: [id]) + player Player @relation(fields: [playerId], references: [id], onDelete: Restrict) playerId Int distance Float from String @@ -91,22 +91,22 @@ model TrainTrip { departureTime DateTime @db.Timestamptz(3) arrivalTime DateTime @db.Timestamptz(3) infoJson Json - run PlayerRun @relation(fields: [runId], references: [id]) + run PlayerRun @relation(fields: [runId], references: [id], onDelete: Restrict) runId Int moneyUpdate MoneyUpdate? } model MoneyUpdate { id Int @id @default(autoincrement()) - player Player @relation(fields: [playerId], references: [id]) + player Player @relation(fields: [playerId], references: [id], onDelete: Restrict) playerId Int amount Int reason MoneyUpdateType - action ChallengeAction? @relation(fields: [actionId], references: [id]) + action ChallengeAction? @relation(fields: [actionId], references: [id], onDelete: Cascade) actionId Int? @unique - trip TrainTrip? @relation(fields: [tripId], references: [id]) + trip TrainTrip? @relation(fields: [tripId], references: [id], onDelete: Cascade) tripId String? @unique - run PlayerRun? @relation(fields: [runId], references: [id]) + run PlayerRun? @relation(fields: [runId], references: [id], onDelete: Cascade) runId Int? @unique timestamp DateTime @default(now()) @db.Timestamptz(3) }