From 50eea8f87252d2aa12cd69b0a4d40ca1f03aa402 Mon Sep 17 00:00:00 2001 From: austinkelsay Date: Sat, 12 Oct 2024 13:17:01 -0500 Subject: [PATCH] Unique purchases --- .../migration.sql | 11 ++++++++++ prisma/schema.prisma | 18 ++++++++-------- src/components/banner/HeroBanner.js | 18 ++++++++-------- src/db/models/userModels.js | 21 +++++++++++++++---- 4 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 prisma/migrations/20241012181630_unique_purchases/migration.sql diff --git a/prisma/migrations/20241012181630_unique_purchases/migration.sql b/prisma/migrations/20241012181630_unique_purchases/migration.sql new file mode 100644 index 0000000..9fea0da --- /dev/null +++ b/prisma/migrations/20241012181630_unique_purchases/migration.sql @@ -0,0 +1,11 @@ +/* + Warnings: + + - A unique constraint covering the columns `[userId,courseId,resourceId]` on the table `Purchase` will be added. If there are existing duplicate values, this will fail. + +*/ +-- DropIndex +DROP INDEX "Purchase_userId_courseId_key"; + +-- CreateIndex +CREATE UNIQUE INDEX "Purchase_userId_courseId_resourceId_key" ON "Purchase"("userId", "courseId", "resourceId"); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 61d1bc5..91e7645 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,14 +1,14 @@ -// datasource db { -// provider = "postgresql" -// url = env("DATABASE_URL") -// } - datasource db { - provider = "postgresql" - url = env("POSTGRES_PRISMA_URL") - directUrl = env("POSTGRES_URL_NON_POOLING") + provider = "postgresql" + url = env("DATABASE_URL") } +// datasource db { +// provider = "postgresql" +// url = env("POSTGRES_PRISMA_URL") +// directUrl = env("POSTGRES_URL_NON_POOLING") +// } + generator client { provider = "prisma-client-js" } @@ -202,7 +202,7 @@ model Purchase { course Course? @relation(fields: [courseId], references: [id]) resource Resource? @relation(fields: [resourceId], references: [id]) - @@unique([userId, courseId]) + @@unique([userId, courseId, resourceId]) } model UserCourse { diff --git a/src/components/banner/HeroBanner.js b/src/components/banner/HeroBanner.js index e2a30c4..1730d48 100644 --- a/src/components/banner/HeroBanner.js +++ b/src/components/banner/HeroBanner.js @@ -99,21 +99,21 @@ const HeroBanner = () => { )}
- - - - - - + + + + + +
{Array.from({ length: 5 }).map((_, index) => ( - + ))} -

4.9

+

4.87

- from 500+ students + 500+ students enrolled
diff --git a/src/db/models/userModels.js b/src/db/models/userModels.js index 828d113..340c0e5 100644 --- a/src/db/models/userModels.js +++ b/src/db/models/userModels.js @@ -83,9 +83,21 @@ export const addResourcePurchaseToUser = async (userId, purchaseData) => { where: { id: userId }, data: { purchased: { - create: { - resourceId: purchaseData.resourceId, - amountPaid: purchaseData.amountPaid, + upsert: { + where: { + userId_courseId_resourceId: { + userId: userId, + courseId: null, + resourceId: purchaseData.resourceId, + }, + }, + create: { + resourceId: purchaseData.resourceId, + amountPaid: purchaseData.amountPaid, + }, + update: { + amountPaid: purchaseData.amountPaid, + }, }, }, }, @@ -106,9 +118,10 @@ export const addCoursePurchaseToUser = async (userId, purchaseData) => { purchased: { upsert: { where: { - userId_courseId: { + userId_courseId_resourceId: { userId: userId, courseId: purchaseData.courseId, + resourceId: null, }, }, create: {