From d1c121e6e8c362f6ed06fcfe691d8e5442d04661 Mon Sep 17 00:00:00 2001 From: austinkelsay Date: Sun, 18 Aug 2024 14:45:51 -0500 Subject: [PATCH] Allow both drafts and published resources to make it into course draft, seperated selectedContentItem in course form into its own component --- .../migration.sql | 18 ++ prisma/schema.prisma | 26 +-- .../bitcoinConnect/CoursePaymentButton.js | 6 +- .../bitcoinConnect/ResourcePaymentButton.js | 6 +- src/components/content/SelectedContentItem.js | 31 ++++ .../content/dropdowns/ContentDropdownItem.js | 30 +--- src/components/forms/CourseForm.js | 166 +++++------------- src/pages/api/courses/drafts/index.js | 13 +- 8 files changed, 125 insertions(+), 171 deletions(-) rename prisma/migrations/{20240816152315_init => 20240818185547_init}/migration.sql (87%) create mode 100644 src/components/content/SelectedContentItem.js diff --git a/prisma/migrations/20240816152315_init/migration.sql b/prisma/migrations/20240818185547_init/migration.sql similarity index 87% rename from prisma/migrations/20240816152315_init/migration.sql rename to prisma/migrations/20240818185547_init/migration.sql index ba97517..d180629 100644 --- a/prisma/migrations/20240816152315_init/migration.sql +++ b/prisma/migrations/20240818185547_init/migration.sql @@ -91,6 +91,12 @@ CREATE TABLE "CourseDraft" ( CONSTRAINT "CourseDraft_pkey" PRIMARY KEY ("id") ); +-- CreateTable +CREATE TABLE "_CourseDraftToDraft" ( + "A" TEXT NOT NULL, + "B" TEXT NOT NULL +); + -- CreateIndex CREATE UNIQUE INDEX "User_pubkey_key" ON "User"("pubkey"); @@ -106,6 +112,12 @@ CREATE UNIQUE INDEX "Resource_noteId_key" ON "Resource"("noteId"); -- CreateIndex CREATE UNIQUE INDEX "CourseDraft_courseId_key" ON "CourseDraft"("courseId"); +-- CreateIndex +CREATE UNIQUE INDEX "_CourseDraftToDraft_AB_unique" ON "_CourseDraftToDraft"("A", "B"); + +-- CreateIndex +CREATE INDEX "_CourseDraftToDraft_B_index" ON "_CourseDraftToDraft"("B"); + -- AddForeignKey ALTER TABLE "User" ADD CONSTRAINT "User_roleId_fkey" FOREIGN KEY ("roleId") REFERENCES "Role"("id") ON DELETE SET NULL ON UPDATE CASCADE; @@ -138,3 +150,9 @@ ALTER TABLE "CourseDraft" ADD CONSTRAINT "CourseDraft_userId_fkey" FOREIGN KEY ( -- AddForeignKey ALTER TABLE "CourseDraft" ADD CONSTRAINT "CourseDraft_courseId_fkey" FOREIGN KEY ("courseId") REFERENCES "Course"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_CourseDraftToDraft" ADD CONSTRAINT "_CourseDraftToDraft_A_fkey" FOREIGN KEY ("A") REFERENCES "CourseDraft"("id") ON DELETE CASCADE ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "_CourseDraftToDraft" ADD CONSTRAINT "_CourseDraftToDraft_B_fkey" FOREIGN KEY ("B") REFERENCES "Draft"("id") ON DELETE CASCADE ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 52d35c4..41f7fb2 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -70,18 +70,19 @@ model Resource { } model Draft { - id String @id @default(uuid()) - userId String - user User @relation(fields: [userId], references: [id]) - type String - title String - summary String - content String - image String? - price Int? @default(0) - topics String[] - createdAt DateTime @default(now()) - updatedAt DateTime @updatedAt + id String @id @default(uuid()) + userId String + user User @relation(fields: [userId], references: [id]) + type String + title String + summary String + content String + image String? + price Int? @default(0) + topics String[] + createdAt DateTime @default(now()) + updatedAt DateTime @updatedAt + courseDrafts CourseDraft[] } model CourseDraft { @@ -89,6 +90,7 @@ model CourseDraft { userId String user User @relation(fields: [userId], references: [id]) resources Resource[] + drafts Draft[] title String summary String image String? diff --git a/src/components/bitcoinConnect/CoursePaymentButton.js b/src/components/bitcoinConnect/CoursePaymentButton.js index 4dce127..41e4ae5 100644 --- a/src/components/bitcoinConnect/CoursePaymentButton.js +++ b/src/components/bitcoinConnect/CoursePaymentButton.js @@ -76,10 +76,12 @@ const CoursePaymentButton = ({ lnAddress, amount, onSuccess, onError, courseId } return ( <>