diff options
| author | MohamedBassem <me@mbassem.com> | 2024-02-23 19:27:31 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-02-23 20:47:54 +0000 |
| commit | e234d3535c363664902dffe89a2c61ddbc037da4 (patch) | |
| tree | 5430570d98bc376ce92c8ecc5d2503ecced1d79b /packages/web/app/dashboard | |
| parent | bed57209b09a4bd59dbaf010d58045fe77896ba8 (diff) | |
| download | karakeep-e234d3535c363664902dffe89a2c61ddbc037da4.tar.zst | |
db: Migrate from prisma to drizzle
Diffstat (limited to 'packages/web/app/dashboard')
| -rw-r--r-- | packages/web/app/dashboard/tags/[tagName]/page.tsx | 26 | ||||
| -rw-r--r-- | packages/web/app/dashboard/tags/page.tsx | 32 |
2 files changed, 27 insertions, 31 deletions
diff --git a/packages/web/app/dashboard/tags/[tagName]/page.tsx b/packages/web/app/dashboard/tags/[tagName]/page.tsx index 729a5cbc..493cb358 100644 --- a/packages/web/app/dashboard/tags/[tagName]/page.tsx +++ b/packages/web/app/dashboard/tags/[tagName]/page.tsx @@ -1,8 +1,10 @@ import { getServerAuthSession } from "@/server/auth"; -import { prisma } from "@hoarder/db"; +import { db } from "@hoarder/db"; import { notFound, redirect } from "next/navigation"; import BookmarksGrid from "../../bookmarks/components/BookmarksGrid"; import { api } from "@/server/api/client"; +import { bookmarkTags, tagsOnBookmarks } from "@hoarder/db/schema"; +import { and, eq } from "drizzle-orm"; export default async function TagPage({ params, @@ -13,14 +15,12 @@ export default async function TagPage({ if (!session) { redirect("/"); } - const tag = await prisma.bookmarkTags.findUnique({ - where: { - userId_name: { - userId: session.user.id, - name: params.tagName, - }, - }, - select: { + const tag = await db.query.bookmarkTags.findFirst({ + where: and( + eq(bookmarkTags.userId, session.user.id), + eq(bookmarkTags.name, params.tagName), + ), + columns: { id: true, }, }); @@ -30,11 +30,9 @@ export default async function TagPage({ notFound(); } - const bookmarkIds = await prisma.tagsOnBookmarks.findMany({ - where: { - tagId: tag.id, - }, - select: { + const bookmarkIds = await db.query.tagsOnBookmarks.findMany({ + where: eq(tagsOnBookmarks.tagId, tag.id), + columns: { bookmarkId: true, }, }); diff --git a/packages/web/app/dashboard/tags/page.tsx b/packages/web/app/dashboard/tags/page.tsx index d76a7f91..4b12fe35 100644 --- a/packages/web/app/dashboard/tags/page.tsx +++ b/packages/web/app/dashboard/tags/page.tsx @@ -1,5 +1,7 @@ import { getServerAuthSession } from "@/server/auth"; -import { prisma } from "@hoarder/db"; +import { db } from "@hoarder/db"; +import { bookmarkTags, tagsOnBookmarks } from "@hoarder/db/schema"; +import { count, eq } from "drizzle-orm"; import Link from "next/link"; import { redirect } from "next/navigation"; @@ -23,28 +25,24 @@ export default async function TagsPage() { redirect("/"); } - let tags = await prisma.bookmarkTags.findMany({ - where: { - userId: session.user.id, - }, - include: { - _count: { - select: { - bookmarks: true, - }, - }, - }, - }); + let tags = await db + .select({ + id: tagsOnBookmarks.tagId, + name: bookmarkTags.name, + count: count(), + }) + .from(tagsOnBookmarks) + .where(eq(bookmarkTags.userId, session.user.id)) + .groupBy(tagsOnBookmarks.tagId) + .innerJoin(bookmarkTags, eq(bookmarkTags.id, tagsOnBookmarks.tagId)); // Sort tags by usage desc - tags = tags - .filter((t) => t._count.bookmarks > 0) - .sort((a, b) => b._count.bookmarks - a._count.bookmarks); + tags = tags.sort((a, b) => b.count - a.count); let tagPill; if (tags.length) { tagPill = tags.map((t) => ( - <TagPill key={t.id} name={t.name} count={t._count.bookmarks} /> + <TagPill key={t.id} name={t.name} count={t.count} /> )); } else { tagPill = "No Tags"; |
