diff options
| author | MohamedBassem <me@mbassem.com> | 2025-04-06 23:50:39 +0100 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2025-04-06 23:50:39 +0100 |
| commit | af6774fab6502b3f49a71dea955357992e5edc77 (patch) | |
| tree | be63f9ebf16bdd807b5cd882265cb0c27bf1bf85 /packages/trpc/lib/search.ts | |
| parent | d86628dfabe8b9c17c7dd68b3d291104c3b25704 (diff) | |
| download | karakeep-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.ts | 29 |
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 }) |
