aboutsummaryrefslogtreecommitdiffstats
path: root/packages/trpc/lib/search.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2025-04-06 23:50:39 +0100
committerMohamedBassem <me@mbassem.com>2025-04-06 23:50:39 +0100
commitaf6774fab6502b3f49a71dea955357992e5edc77 (patch)
treebe63f9ebf16bdd807b5cd882265cb0c27bf1bf85 /packages/trpc/lib/search.ts
parentd86628dfabe8b9c17c7dd68b3d291104c3b25704 (diff)
downloadkarakeep-af6774fab6502b3f49a71dea955357992e5edc77.tar.zst
feat: Add a search matcher for rss feed bookmarks
Diffstat (limited to 'packages/trpc/lib/search.ts')
-rw-r--r--packages/trpc/lib/search.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/packages/trpc/lib/search.ts b/packages/trpc/lib/search.ts
index de76748b..83dfa674 100644
--- a/packages/trpc/lib/search.ts
+++ b/packages/trpc/lib/search.ts
@@ -20,6 +20,8 @@ import {
bookmarks,
bookmarksInLists,
bookmarkTags,
+ rssFeedImportsTable,
+ rssFeedsTable,
tagsOnBookmarks,
} from "@hoarder/db/schema";
import { Matcher } from "@hoarder/shared/types/search";
@@ -177,6 +179,33 @@ async function getIds(
),
);
}
+ case "rssFeedName": {
+ const comp = matcher.inverse ? notExists : exists;
+ return db
+ .selectDistinct({ id: bookmarks.id })
+ .from(bookmarks)
+ .where(
+ and(
+ eq(bookmarks.userId, userId),
+ comp(
+ db
+ .select()
+ .from(rssFeedImportsTable)
+ .innerJoin(
+ rssFeedsTable,
+ eq(rssFeedImportsTable.rssFeedId, rssFeedsTable.id),
+ )
+ .where(
+ and(
+ eq(rssFeedImportsTable.bookmarkId, bookmarks.id),
+ eq(rssFeedsTable.userId, userId),
+ eq(rssFeedsTable.name, matcher.feedName),
+ ),
+ ),
+ ),
+ ),
+ );
+ }
case "archived": {
return db
.select({ id: bookmarks.id })