diff options
| author | Mohamed Bassem <me@mbassem.com> | 2024-11-03 17:30:17 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-11-03 17:30:17 +0000 |
| commit | fa8286aa900ea4f13c1c15d5b0f441436f042d8a (patch) | |
| tree | 380a2464f3777059aad67f37bcbdc9ada030327f /packages | |
| parent | cf1a25131fd45ab7c9a72b837be525c24457cd8b (diff) | |
| download | karakeep-fa8286aa900ea4f13c1c15d5b0f441436f042d8a.tar.zst | |
feature(web): Add the ability to view the bookmarks of a particular rss feed
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/shared/types/bookmarks.ts | 1 | ||||
| -rw-r--r-- | packages/trpc/routers/bookmarks.ts | 14 | ||||
| -rw-r--r-- | packages/trpc/routers/feeds.ts | 20 |
3 files changed, 35 insertions, 0 deletions
diff --git a/packages/shared/types/bookmarks.ts b/packages/shared/types/bookmarks.ts index 2d46684e..1d8052f4 100644 --- a/packages/shared/types/bookmarks.ts +++ b/packages/shared/types/bookmarks.ts @@ -133,6 +133,7 @@ export const zGetBookmarksRequestSchema = z.object({ favourited: z.boolean().optional(), tagId: z.string().optional(), listId: z.string().optional(), + rssFeedId: z.string().optional(), limit: z.number().max(MAX_NUM_BOOKMARKS_PER_PAGE).optional(), cursor: zCursorV2.nullish(), // TODO: This was done for backward comptability. At this point, all clients should be settings this to true. diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts index 9a27c25a..4e58bcdc 100644 --- a/packages/trpc/routers/bookmarks.ts +++ b/packages/trpc/routers/bookmarks.ts @@ -18,6 +18,7 @@ import { bookmarksInLists, bookmarkTags, bookmarkTexts, + rssFeedImportsTable, tagsOnBookmarks, } from "@hoarder/db/schema"; import { deleteAsset } from "@hoarder/shared/assetdb"; @@ -591,6 +592,19 @@ export const bookmarksAppRouter = router({ ), ) : undefined, + input.rssFeedId !== undefined + ? exists( + ctx.db + .select() + .from(rssFeedImportsTable) + .where( + and( + eq(rssFeedImportsTable.bookmarkId, bookmarks.id), + eq(rssFeedImportsTable.rssFeedId, input.rssFeedId), + ), + ), + ) + : undefined, input.listId !== undefined ? exists( ctx.db diff --git a/packages/trpc/routers/feeds.ts b/packages/trpc/routers/feeds.ts index a8025dfb..e5520474 100644 --- a/packages/trpc/routers/feeds.ts +++ b/packages/trpc/routers/feeds.ts @@ -82,6 +82,26 @@ export const feedsAppRouter = router({ } return feed[0]; }), + get: authedProcedure + .input( + z.object({ + feedId: z.string(), + }), + ) + .output(zFeedSchema) + .use(ensureFeedOwnership) + .query(async ({ ctx, input }) => { + const feed = await ctx.db.query.rssFeedsTable.findFirst({ + where: and( + eq(rssFeedsTable.userId, ctx.user.id), + eq(rssFeedsTable.id, input.feedId), + ), + }); + if (!feed) { + throw new TRPCError({ code: "NOT_FOUND" }); + } + return feed; + }), list: authedProcedure .output(z.object({ feeds: z.array(zFeedSchema) })) .query(async ({ ctx }) => { |
