diff options
| author | Mohamed Bassem <me@mbassem.com> | 2024-12-31 14:15:02 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2024-12-31 14:20:48 +0000 |
| commit | 96cc11ef321b4580430c05f9344c6eb7dbddcf23 (patch) | |
| tree | 9d7115ff76a2c173794a9b8ce3a54463ab748145 /packages/trpc/lib/search.ts | |
| parent | 4deda9d477141e864f472ba95003e3974346f10d (diff) | |
| download | karakeep-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.ts | 34 |
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 }) |
