From 5d3d3314f30f0b04f685101d126b313e3d7bd14c Mon Sep 17 00:00:00 2001 From: hpkoh Date: Sun, 23 Oct 2022 18:26:26 +0800 Subject: [PATCH] [questions][feat] add list migration --- .../migration.sql | 36 +++++++++++++++++++ apps/portal/prisma/schema.prisma | 16 +++++---- 2 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql diff --git a/apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql b/apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql new file mode 100644 index 00000000..ccc20bf1 --- /dev/null +++ b/apps/portal/prisma/migrations/20221023102619_add_list_schema/migration.sql @@ -0,0 +1,36 @@ +-- CreateTable +CREATE TABLE "QuestionsList" ( + "id" TEXT NOT NULL, + "userId" TEXT NOT NULL, + "name" VARCHAR(256) NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "QuestionsList_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "QuestionsListQuestionEntry" ( + "id" TEXT NOT NULL, + "listId" TEXT NOT NULL, + "questionId" TEXT NOT NULL, + "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "updatedAt" TIMESTAMP(3) NOT NULL, + + CONSTRAINT "QuestionsListQuestionEntry_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "QuestionsList_userId_name_key" ON "QuestionsList"("userId", "name"); + +-- CreateIndex +CREATE UNIQUE INDEX "QuestionsListQuestionEntry_listId_questionId_key" ON "QuestionsListQuestionEntry"("listId", "questionId"); + +-- AddForeignKey +ALTER TABLE "QuestionsList" ADD CONSTRAINT "QuestionsList_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "QuestionsListQuestionEntry" ADD CONSTRAINT "QuestionsListQuestionEntry_listId_fkey" FOREIGN KEY ("listId") REFERENCES "QuestionsList"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "QuestionsListQuestionEntry" ADD CONSTRAINT "QuestionsListQuestionEntry_questionId_fkey" FOREIGN KEY ("questionId") REFERENCES "QuestionsQuestion"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/apps/portal/prisma/schema.prisma b/apps/portal/prisma/schema.prisma index 04f4af77..abbab8e8 100644 --- a/apps/portal/prisma/schema.prisma +++ b/apps/portal/prisma/schema.prisma @@ -60,6 +60,7 @@ model User { questionsAnswerCommentVotes QuestionsAnswerCommentVote[] OffersProfile OffersProfile[] offersDiscussion OffersReply[] + questionsLists QuestionsList[] } enum Vote { @@ -409,11 +410,12 @@ model QuestionsQuestion { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - user User? @relation(fields: [userId], references: [id], onDelete: SetNull) - encounters QuestionsQuestionEncounter[] - votes QuestionsQuestionVote[] - comments QuestionsQuestionComment[] - answers QuestionsAnswer[] + user User? @relation(fields: [userId], references: [id], onDelete: SetNull) + encounters QuestionsQuestionEncounter[] + votes QuestionsQuestionVote[] + comments QuestionsQuestionComment[] + answers QuestionsAnswer[] + QuestionsListQuestionEntry QuestionsListQuestionEntry[] @@index([lastSeenAt, id]) @@index([upvotes, id]) @@ -539,8 +541,8 @@ model QuestionsList { createdAt DateTime @default(now()) updatedAt DateTime @updatedAt - user User @relation(fields: [userId], references: [id], onDelete: Cascade) - questionEntries QuestionsListQuestion[] + user User @relation(fields: [userId], references: [id], onDelete: Cascade) + questionEntries QuestionsListQuestionEntry[] @@unique([userId, name]) }