diff options
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 }) |
