diff options
| author | MohamedBassem <me@mbassem.com> | 2024-04-23 13:56:35 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-04-23 13:56:35 +0100 |
| commit | 77b1aba5acc66dfaeb02b08d60d88442336026a6 (patch) | |
| tree | 950f71d7c868869902e742644697e077db734769 /packages/trpc/routers/lists.ts | |
| parent | 0e260954c13cfedb03e75d3f0db8a2e839fd008d (diff) | |
| download | karakeep-77b1aba5acc66dfaeb02b08d60d88442336026a6.tar.zst | |
feature(extension): Allow adding tags and lists to newly hoarded bookmarks
Diffstat (limited to 'packages/trpc/routers/lists.ts')
| -rw-r--r-- | packages/trpc/routers/lists.ts | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/packages/trpc/routers/lists.ts b/packages/trpc/routers/lists.ts index 5cab0ac3..d4b56ecf 100644 --- a/packages/trpc/routers/lists.ts +++ b/packages/trpc/routers/lists.ts @@ -1,3 +1,4 @@ +import assert from "node:assert"; import { experimental_trpcMiddleware, TRPCError } from "@trpc/server"; import { and, eq } from "drizzle-orm"; import { z } from "zod"; @@ -222,4 +223,23 @@ export const listsAppRouter = router({ return { lists }; }), + getListsOfBookmark: authedProcedure + .input(z.object({ bookmarkId: z.string() })) + .output( + z.object({ + lists: z.array(zBookmarkListSchema), + }), + ) + .use(ensureBookmarkOwnership) + .query(async ({ input, ctx }) => { + const lists = await ctx.db.query.bookmarksInLists.findMany({ + where: and(eq(bookmarksInLists.bookmarkId, input.bookmarkId)), + with: { + list: true, + }, + }); + assert(lists.map((l) => l.list.userId).every((id) => id == ctx.user.id)); + + return { lists: lists.map((l) => l.list) }; + }), }); |
