From 8e6bdae2c53a80a79bddccb752b954b5306056fd Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Sun, 6 Feb 2022 12:01:46 +0200 Subject: [PATCH] Add LFGGroupMatchStage table migration --- .../migration.sql | 68 ++++++++++++------- prisma/schema.prisma | 32 ++++++--- 2 files changed, 68 insertions(+), 32 deletions(-) rename prisma/migrations/{20220202072359_initial => 20220206095503_initial}/migration.sql (93%) diff --git a/prisma/migrations/20220202072359_initial/migration.sql b/prisma/migrations/20220206095503_initial/migration.sql similarity index 93% rename from prisma/migrations/20220202072359_initial/migration.sql rename to prisma/migrations/20220206095503_initial/migration.sql index f7c71c20b..9fb11af23 100644 --- a/prisma/migrations/20220202072359_initial/migration.sql +++ b/prisma/migrations/20220206095503_initial/migration.sql @@ -188,6 +188,14 @@ CREATE TABLE "LfgGroupMatch" ( CONSTRAINT "LfgGroupMatch_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "LfgGroupMatchStage" ( + "lfgGroupMatchId" TEXT NOT NULL, + "stageId" INTEGER NOT NULL, + "order" INTEGER NOT NULL, + "winnerGroupId" TEXT +); + -- CreateTable CREATE TABLE "Skill" ( "id" TEXT NOT NULL, @@ -202,14 +210,14 @@ CREATE TABLE "Skill" ( ); -- CreateTable -CREATE TABLE "_TournamentMatchGameResultToUser" ( - "A" TEXT NOT NULL, +CREATE TABLE "_StageToTournament" ( + "A" INTEGER NOT NULL, "B" TEXT NOT NULL ); -- CreateTable -CREATE TABLE "_StageToTournament" ( - "A" INTEGER NOT NULL, +CREATE TABLE "_TournamentMatchGameResultToUser" ( + "A" TEXT NOT NULL, "B" TEXT NOT NULL ); @@ -259,10 +267,7 @@ CREATE UNIQUE INDEX "LfgGroupLike_likerId_targetId_key" ON "LfgGroupLike"("liker CREATE UNIQUE INDEX "LfgGroupMember_groupId_memberId_key" ON "LfgGroupMember"("groupId", "memberId"); -- CreateIndex -CREATE UNIQUE INDEX "_TournamentMatchGameResultToUser_AB_unique" ON "_TournamentMatchGameResultToUser"("A", "B"); - --- CreateIndex -CREATE INDEX "_TournamentMatchGameResultToUser_B_index" ON "_TournamentMatchGameResultToUser"("B"); +CREATE UNIQUE INDEX "LfgGroupMatchStage_lfgGroupMatchId_order_key" ON "LfgGroupMatchStage"("lfgGroupMatchId", "order"); -- CreateIndex CREATE UNIQUE INDEX "_StageToTournament_AB_unique" ON "_StageToTournament"("A", "B"); @@ -270,6 +275,12 @@ CREATE UNIQUE INDEX "_StageToTournament_AB_unique" ON "_StageToTournament"("A", -- CreateIndex CREATE INDEX "_StageToTournament_B_index" ON "_StageToTournament"("B"); +-- CreateIndex +CREATE UNIQUE INDEX "_TournamentMatchGameResultToUser_AB_unique" ON "_TournamentMatchGameResultToUser"("A", "B"); + +-- CreateIndex +CREATE INDEX "_TournamentMatchGameResultToUser_B_index" ON "_TournamentMatchGameResultToUser"("B"); + -- AddForeignKey ALTER TABLE "Organization" ADD CONSTRAINT "Organization_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -280,10 +291,10 @@ ALTER TABLE "Tournament" ADD CONSTRAINT "Tournament_organizerId_fkey" FOREIGN KE ALTER TABLE "TournamentTeam" ADD CONSTRAINT "TournamentTeam_tournamentId_fkey" FOREIGN KEY ("tournamentId") REFERENCES "Tournament"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "TournamentTeamMember" ADD CONSTRAINT "TournamentTeamMember_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "TournamentTeam"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "TournamentTeamMember" ADD CONSTRAINT "TournamentTeamMember_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "TournamentTeamMember" ADD CONSTRAINT "TournamentTeamMember_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "TournamentTeamMember" ADD CONSTRAINT "TournamentTeamMember_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "TournamentTeam"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "TrustRelationships" ADD CONSTRAINT "TrustRelationships_trustGiverId_fkey" FOREIGN KEY ("trustGiverId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -297,11 +308,14 @@ ALTER TABLE "TournamentBracket" ADD CONSTRAINT "TournamentBracket_tournamentId_f -- AddForeignKey ALTER TABLE "TournamentRound" ADD CONSTRAINT "TournamentRound_bracketId_fkey" FOREIGN KEY ("bracketId") REFERENCES "TournamentBracket"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "TournamentRoundStage" ADD CONSTRAINT "TournamentRoundStage_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "TournamentRoundStage" ADD CONSTRAINT "TournamentRoundStage_roundId_fkey" FOREIGN KEY ("roundId") REFERENCES "TournamentRound"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "TournamentRoundStage" ADD CONSTRAINT "TournamentRoundStage_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "TournamentMatch" ADD CONSTRAINT "TournamentMatch_roundId_fkey" FOREIGN KEY ("roundId") REFERENCES "TournamentRound"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "TournamentMatch" ADD CONSTRAINT "TournamentMatch_winnerDestinationMatchId_fkey" FOREIGN KEY ("winnerDestinationMatchId") REFERENCES "TournamentMatch"("id") ON DELETE SET NULL ON UPDATE CASCADE; @@ -309,9 +323,6 @@ ALTER TABLE "TournamentMatch" ADD CONSTRAINT "TournamentMatch_winnerDestinationM -- AddForeignKey ALTER TABLE "TournamentMatch" ADD CONSTRAINT "TournamentMatch_loserDestinationMatchId_fkey" FOREIGN KEY ("loserDestinationMatchId") REFERENCES "TournamentMatch"("id") ON DELETE SET NULL ON UPDATE CASCADE; --- AddForeignKey -ALTER TABLE "TournamentMatch" ADD CONSTRAINT "TournamentMatch_roundId_fkey" FOREIGN KEY ("roundId") REFERENCES "TournamentRound"("id") ON DELETE RESTRICT ON UPDATE CASCADE; - -- AddForeignKey ALTER TABLE "TournamentMatchParticipant" ADD CONSTRAINT "TournamentMatchParticipant_teamId_fkey" FOREIGN KEY ("teamId") REFERENCES "TournamentTeam"("id") ON DELETE RESTRICT ON UPDATE CASCADE; @@ -319,10 +330,10 @@ ALTER TABLE "TournamentMatchParticipant" ADD CONSTRAINT "TournamentMatchParticip ALTER TABLE "TournamentMatchParticipant" ADD CONSTRAINT "TournamentMatchParticipant_matchId_fkey" FOREIGN KEY ("matchId") REFERENCES "TournamentMatch"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "TournamentMatchGameResult" ADD CONSTRAINT "TournamentMatchGameResult_matchId_fkey" FOREIGN KEY ("matchId") REFERENCES "TournamentMatch"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "TournamentMatchGameResult" ADD CONSTRAINT "TournamentMatchGameResult_roundStageId_fkey" FOREIGN KEY ("roundStageId") REFERENCES "TournamentRoundStage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "TournamentMatchGameResult" ADD CONSTRAINT "TournamentMatchGameResult_roundStageId_fkey" FOREIGN KEY ("roundStageId") REFERENCES "TournamentRoundStage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "TournamentMatchGameResult" ADD CONSTRAINT "TournamentMatchGameResult_matchId_fkey" FOREIGN KEY ("matchId") REFERENCES "TournamentMatch"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "LfgGroup" ADD CONSTRAINT "LfgGroup_matchId_fkey" FOREIGN KEY ("matchId") REFERENCES "LfgGroupMatch"("id") ON DELETE SET NULL ON UPDATE CASCADE; @@ -333,29 +344,38 @@ ALTER TABLE "LfgGroupLike" ADD CONSTRAINT "LfgGroupLike_likerId_fkey" FOREIGN KE -- AddForeignKey ALTER TABLE "LfgGroupLike" ADD CONSTRAINT "LfgGroupLike_targetId_fkey" FOREIGN KEY ("targetId") REFERENCES "LfgGroup"("id") ON DELETE CASCADE ON UPDATE CASCADE; +-- AddForeignKey +ALTER TABLE "LfgGroupMember" ADD CONSTRAINT "LfgGroupMember_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + -- AddForeignKey ALTER TABLE "LfgGroupMember" ADD CONSTRAINT "LfgGroupMember_groupId_fkey" FOREIGN KEY ("groupId") REFERENCES "LfgGroup"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "LfgGroupMember" ADD CONSTRAINT "LfgGroupMember_memberId_fkey" FOREIGN KEY ("memberId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; +ALTER TABLE "LfgGroupMatchStage" ADD CONSTRAINT "LfgGroupMatchStage_stageId_fkey" FOREIGN KEY ("stageId") REFERENCES "Stage"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "LfgGroupMatchStage" ADD CONSTRAINT "LfgGroupMatchStage_winnerGroupId_fkey" FOREIGN KEY ("winnerGroupId") REFERENCES "LfgGroup"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "LfgGroupMatchStage" ADD CONSTRAINT "LfgGroupMatchStage_lfgGroupMatchId_fkey" FOREIGN KEY ("lfgGroupMatchId") REFERENCES "LfgGroupMatch"("id") ON DELETE RESTRICT ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Skill" ADD CONSTRAINT "Skill_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; --- AddForeignKey -ALTER TABLE "Skill" ADD CONSTRAINT "Skill_matchId_fkey" FOREIGN KEY ("matchId") REFERENCES "LfgGroupMatch"("id") ON DELETE SET NULL ON UPDATE CASCADE; - -- AddForeignKey ALTER TABLE "Skill" ADD CONSTRAINT "Skill_tournamentId_fkey" FOREIGN KEY ("tournamentId") REFERENCES "Tournament"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey -ALTER TABLE "_TournamentMatchGameResultToUser" ADD FOREIGN KEY ("A") REFERENCES "TournamentMatchGameResult"("id") ON DELETE CASCADE ON UPDATE CASCADE; - --- AddForeignKey -ALTER TABLE "_TournamentMatchGameResultToUser" ADD FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; +ALTER TABLE "Skill" ADD CONSTRAINT "Skill_matchId_fkey" FOREIGN KEY ("matchId") REFERENCES "LfgGroupMatch"("id") ON DELETE SET NULL ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "_StageToTournament" ADD FOREIGN KEY ("A") REFERENCES "Stage"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "_StageToTournament" ADD FOREIGN KEY ("B") REFERENCES "Tournament"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_TournamentMatchGameResultToUser" ADD FOREIGN KEY ("A") REFERENCES "TournamentMatchGameResult"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_TournamentMatchGameResultToUser" ADD FOREIGN KEY ("B") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index dad74addc..bb6649656 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -82,6 +82,7 @@ model Stage { mode Mode tournamentMapPools Tournament[] tournamentRounds TournamentRoundStage[] + lfgGroupMatches LfgGroupMatchStage[] } model TournamentTeam { @@ -196,6 +197,7 @@ model TournamentMatchGameResult { id String @id @default(uuid()) matchId String roundStageId String + // TODO: winnerTeamId instead winner TeamOrder reporterId String createdAt DateTime @default(now()) @@ -213,18 +215,19 @@ enum LfgGroupType { } model LfgGroup { - id String @id @default(uuid()) + id String @id @default(uuid()) ranked Boolean? type LfgGroupType - active Boolean @default(true) + active Boolean @default(true) looking Boolean matchId String? - inviteCode String @default(uuid()) - createdAt DateTime @default(now()) + inviteCode String @default(uuid()) + createdAt DateTime @default(now()) members LfgGroupMember[] - match LfgGroupMatch? @relation(fields: [matchId], references: [id]) - likedGroups LfgGroupLike[] @relation("liker") - likesReceived LfgGroupLike[] @relation("target") + match LfgGroupMatch? @relation(fields: [matchId], references: [id]) + likedGroups LfgGroupLike[] @relation("liker") + likesReceived LfgGroupLike[] @relation("target") + matches LfgGroupMatchStage[] @@index([active]) @@index([looking]) @@ -252,9 +255,22 @@ model LfgGroupMember { } model LfgGroupMatch { - id String @id @default(uuid()) + id String @id @default(uuid()) groups LfgGroup[] changedSkills Skill[] + stages LfgGroupMatchStage[] +} + +model LfgGroupMatchStage { + lfgGroupMatchId String + stageId Int + order Int + winnerGroupId String? + lfgGroupMatch LfgGroupMatch @relation(fields: [lfgGroupMatchId], references: [id]) + stage Stage @relation(fields: [stageId], references: [id]) + winnerGroup LfgGroup? @relation(fields: [winnerGroupId], references: [id]) + + @@unique([lfgGroupMatchId, order]) } model Skill {