aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-11-03 17:30:17 +0000
committerMohamed Bassem <me@mbassem.com>2024-11-03 17:30:17 +0000
commitfa8286aa900ea4f13c1c15d5b0f441436f042d8a (patch)
tree380a2464f3777059aad67f37bcbdc9ada030327f /packages
parentcf1a25131fd45ab7c9a72b837be525c24457cd8b (diff)
downloadkarakeep-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.ts1
-rw-r--r--packages/trpc/routers/bookmarks.ts14
-rw-r--r--packages/trpc/routers/feeds.ts20
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 }) => {