aboutsummaryrefslogtreecommitdiffstats
path: root/packages/trpc/lib/search.ts
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2024-12-31 14:15:02 +0000
committerMohamed Bassem <me@mbassem.com>2024-12-31 14:20:48 +0000
commit96cc11ef321b4580430c05f9344c6eb7dbddcf23 (patch)
tree9d7115ff76a2c173794a9b8ce3a54463ab748145 /packages/trpc/lib/search.ts
parent4deda9d477141e864f472ba95003e3974346f10d (diff)
downloadkarakeep-96cc11ef321b4580430c05f9344c6eb7dbddcf23.tar.zst
feat: Add support for searching for tagged and listed items
Diffstat (limited to 'packages/trpc/lib/search.ts')
-rw-r--r--packages/trpc/lib/search.ts34
1 files changed, 34 insertions, 0 deletions
diff --git a/packages/trpc/lib/search.ts b/packages/trpc/lib/search.ts
index fcc5abda..e7e6b5f7 100644
--- a/packages/trpc/lib/search.ts
+++ b/packages/trpc/lib/search.ts
@@ -113,6 +113,23 @@ async function getIds(
),
);
}
+ case "tagged": {
+ const comp = matcher.tagged ? exists : notExists;
+ return db
+ .select({ id: bookmarks.id })
+ .from(bookmarks)
+ .where(
+ and(
+ eq(bookmarks.userId, userId),
+ comp(
+ db
+ .select()
+ .from(tagsOnBookmarks)
+ .where(and(eq(tagsOnBookmarks.bookmarkId, bookmarks.id))),
+ ),
+ ),
+ );
+ }
case "listName": {
const comp = matcher.inverse ? notExists : exists;
return db
@@ -140,6 +157,23 @@ async function getIds(
),
);
}
+ case "inlist": {
+ const comp = matcher.inList ? exists : notExists;
+ return db
+ .select({ id: bookmarks.id })
+ .from(bookmarks)
+ .where(
+ and(
+ eq(bookmarks.userId, userId),
+ comp(
+ db
+ .select()
+ .from(bookmarksInLists)
+ .where(and(eq(bookmarksInLists.bookmarkId, bookmarks.id))),
+ ),
+ ),
+ );
+ }
case "archived": {
return db
.select({ id: bookmarks.id })