diff --git a/prisma/migrations/20230904180101_implement_bookmark/migration.sql b/prisma/migrations/20230904180101_implement_bookmark/migration.sql new file mode 100644 index 0000000..6d41b7f --- /dev/null +++ b/prisma/migrations/20230904180101_implement_bookmark/migration.sql @@ -0,0 +1,23 @@ +-- CreateEnum +CREATE TYPE "CategoryType" AS ENUM ('TALENT', 'BOOKMARK'); + +-- AlterTable +ALTER TABLE "Category" ADD COLUMN "type" "CategoryType" NOT NULL DEFAULT 'TALENT'; + +-- CreateTable +CREATE TABLE "Bookmark" ( + "id" SERIAL NOT NULL, + "createdAd" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "name" TEXT NOT NULL, + "description" TEXT NOT NULL, + "link" TEXT NOT NULL, + "categoryId" INTEGER NOT NULL, + + CONSTRAINT "Bookmark_pkey" PRIMARY KEY ("id") +); + +-- CreateIndex +CREATE UNIQUE INDEX "Bookmark_categoryId_key" ON "Bookmark"("categoryId"); + +-- AddForeignKey +ALTER TABLE "Bookmark" ADD CONSTRAINT "Bookmark_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "Category"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/migrations/20230904180449_improve_bookmarks/migration.sql b/prisma/migrations/20230904180449_improve_bookmarks/migration.sql new file mode 100644 index 0000000..a28e440 --- /dev/null +++ b/prisma/migrations/20230904180449_improve_bookmarks/migration.sql @@ -0,0 +1,45 @@ +/* + Warnings: + + - You are about to drop the `Bookmark` table. If the table is not empty, all the data it contains will be lost. + +*/ +-- DropForeignKey +ALTER TABLE "Bookmark" DROP CONSTRAINT "Bookmark_categoryId_fkey"; + +-- AlterTable +ALTER TABLE "Category" ALTER COLUMN "type" DROP DEFAULT; + +-- DropTable +DROP TABLE "Bookmark"; + +-- CreateTable +CREATE TABLE "BookMark" ( + "id" SERIAL NOT NULL, + "createdAd" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, + "name" TEXT NOT NULL, + "description" TEXT NOT NULL, + "link" TEXT NOT NULL, + + CONSTRAINT "BookMark_pkey" PRIMARY KEY ("id") +); + +-- CreateTable +CREATE TABLE "CategoriesOnBookMarks" ( + "bookmarkId" INTEGER NOT NULL, + "categoryId" INTEGER NOT NULL, + + CONSTRAINT "CategoriesOnBookMarks_pkey" PRIMARY KEY ("bookmarkId","categoryId") +); + +-- CreateIndex +CREATE INDEX "CategoriesOnBookMarks_bookmarkId_idx" ON "CategoriesOnBookMarks"("bookmarkId"); + +-- CreateIndex +CREATE INDEX "CategoriesOnBookMarks_categoryId_idx" ON "CategoriesOnBookMarks"("categoryId"); + +-- AddForeignKey +ALTER TABLE "CategoriesOnBookMarks" ADD CONSTRAINT "CategoriesOnBookMarks_categoryId_fkey" FOREIGN KEY ("categoryId") REFERENCES "Category"("id") ON DELETE RESTRICT ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE "CategoriesOnBookMarks" ADD CONSTRAINT "CategoriesOnBookMarks_bookmarkId_fkey" FOREIGN KEY ("bookmarkId") REFERENCES "BookMark"("id") ON DELETE RESTRICT ON UPDATE CASCADE; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 37f3982..69d3709 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -25,10 +25,12 @@ model Announcement { } model Category { - id Int @id @default(autoincrement()) - createdAt DateTime @default(now()) + id Int @id @default(autoincrement()) + createdAt DateTime @default(now()) slug String name String + type CategoryType + bookmarks CategoriesOnBookMarks[] talents CategoriesOnTalents[] } @@ -54,6 +56,26 @@ model CategoriesOnTalents { @@index([categoryId]) } +model BookMark { + id Int @id @default(autoincrement()) + createdAd DateTime @default(now()) + name String + description String + link String + CategoriesOnBookMarks CategoriesOnBookMarks[] +} + +model CategoriesOnBookMarks { + bookmarkId Int + categoryId Int + bookmark BookMark @relation(fields: [bookmarkId], references: [id]) + category Category @relation(fields: [categoryId], references: [id]) + + @@id([bookmarkId, categoryId]) + @@index([bookmarkId]) + @@index([categoryId]) +} + model Post { id Int @id @default(autoincrement()) slug String @unique @@ -69,3 +91,8 @@ model Form { content String createdAt DateTime @default(now()) } + +enum CategoryType { + TALENT + BOOKMARK +} diff --git a/src/server/trpc/routers/talents.ts b/src/server/trpc/routers/talents.ts index c1133b9..cd1e67e 100644 --- a/src/server/trpc/routers/talents.ts +++ b/src/server/trpc/routers/talents.ts @@ -103,6 +103,10 @@ export default router({ }), getCategories: publicProcedure .query(async ({ ctx }) => { - return await ctx.prisma.category.findMany() + return await ctx.prisma.category.findMany({ + where: { + type: 'TALENT', + }, + }) }), })