From 6ee37ff8f244e703077e9ce896de42657d08c0e1 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Tue, 22 Jul 2025 11:02:00 -0600 Subject: [PATCH] convert groups to array --- .../20250722170032_group_array_required/migration.sql | 9 +++++++++ prisma/schema.prisma | 2 +- server/routes/users/[id]/bookmarks/[tmdbid]/index.ts | 9 ++++++++- 3 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 prisma/migrations/20250722170032_group_array_required/migration.sql diff --git a/prisma/migrations/20250722170032_group_array_required/migration.sql b/prisma/migrations/20250722170032_group_array_required/migration.sql new file mode 100644 index 0000000..e2851d3 --- /dev/null +++ b/prisma/migrations/20250722170032_group_array_required/migration.sql @@ -0,0 +1,9 @@ +/* + Warnings: + + - The `group` column on the `bookmarks` table would be dropped and recreated. This will lead to data loss if there is data in the column. + +*/ +-- AlterTable +ALTER TABLE "bookmarks" DROP COLUMN "group", +ADD COLUMN "group" TEXT[]; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1d590af..03619a6 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -13,7 +13,7 @@ model bookmarks { user_id String @db.VarChar(255) meta Json updated_at DateTime @db.Timestamptz(0) - group String? + group String[] @@id([tmdb_id, user_id]) @@unique([tmdb_id, user_id], map: "bookmarks_tmdb_id_user_id_unique") diff --git a/server/routes/users/[id]/bookmarks/[tmdbid]/index.ts b/server/routes/users/[id]/bookmarks/[tmdbid]/index.ts index d2639c4..cfa9ec9 100644 --- a/server/routes/users/[id]/bookmarks/[tmdbid]/index.ts +++ b/server/routes/users/[id]/bookmarks/[tmdbid]/index.ts @@ -9,7 +9,7 @@ const bookmarkMetaSchema = z.object({ year: z.number(), poster: z.string().optional(), type: z.enum(['movie', 'show']), - group: z.string().optional(), + group: z.union([z.string(), z.array(z.string())]).optional(), }); // Support both formats: direct fields or nested under meta @@ -45,6 +45,13 @@ export default defineEventHandler(async event => { // Validate the meta data separately const validatedMeta = bookmarkMetaSchema.parse(metaData); + // Normalize group to always be an array if present + if (validatedMeta.group) { + validatedMeta.group = Array.isArray(validatedMeta.group) + ? validatedMeta.group + : [validatedMeta.group]; + } + const bookmark = await prisma.bookmarks.create({ data: { user_id: session.user,