aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-10-13 00:17:55 +0000
committerMohamedBassem <me@mbassem.com>2024-10-13 00:17:55 +0000
commit2ccc15ea8865966618cf804968a5ca14ae364345 (patch)
treeea5b16118e486671547b6a273b72134c960418e8
parentfb57f25762b053b4560e915b2bc8b65b71db1170 (diff)
downloadkarakeep-2ccc15ea8865966618cf804968a5ca14ae364345.tar.zst
feature: Support regenerating AI tags only for failed bookmarks
-rw-r--r--apps/web/components/dashboard/admin/AdminActions.tsx11
-rw-r--r--packages/trpc/routers/admin.ts29
2 files changed, 29 insertions, 11 deletions
diff --git a/apps/web/components/dashboard/admin/AdminActions.tsx b/apps/web/components/dashboard/admin/AdminActions.tsx
index e5d6ed69..a97552f8 100644
--- a/apps/web/components/dashboard/admin/AdminActions.tsx
+++ b/apps/web/components/dashboard/admin/AdminActions.tsx
@@ -101,7 +101,16 @@ export default function AdminActions() {
<ActionButton
variant="destructive"
loading={isInferencePending}
- onClick={() => reRunInferenceOnAllBookmarks()}
+ onClick={() =>
+ reRunInferenceOnAllBookmarks({ taggingStatus: "failure" })
+ }
+ >
+ Regenerate AI Tags for Failed Bookmarks Only
+ </ActionButton>
+ <ActionButton
+ variant="destructive"
+ loading={isInferencePending}
+ onClick={() => reRunInferenceOnAllBookmarks({ taggingStatus: "all" })}
>
Regenerate AI Tags for All Bookmarks
</ActionButton>
diff --git a/packages/trpc/routers/admin.ts b/packages/trpc/routers/admin.ts
index ff1249d0..d8ffe9d3 100644
--- a/packages/trpc/routers/admin.ts
+++ b/packages/trpc/routers/admin.ts
@@ -145,17 +145,26 @@ export const adminAppRouter = router({
await Promise.all(bookmarkIds.map((b) => triggerSearchReindex(b.id)));
}),
- reRunInferenceOnAllBookmarks: adminProcedure.mutation(async ({ ctx }) => {
- const bookmarkIds = await ctx.db.query.bookmarks.findMany({
- columns: {
- id: true,
- },
- });
+ reRunInferenceOnAllBookmarks: adminProcedure
+ .input(
+ z.object({
+ taggingStatus: z.enum(["success", "failure", "all"]),
+ }),
+ )
+ .mutation(async ({ input, ctx }) => {
+ const bookmarkIds = await ctx.db.query.bookmarks.findMany({
+ columns: {
+ id: true,
+ },
+ ...(input.taggingStatus === "all"
+ ? {}
+ : { where: eq(bookmarks.taggingStatus, input.taggingStatus) }),
+ });
- await Promise.all(
- bookmarkIds.map((b) => OpenAIQueue.enqueue({ bookmarkId: b.id })),
- );
- }),
+ await Promise.all(
+ bookmarkIds.map((b) => OpenAIQueue.enqueue({ bookmarkId: b.id })),
+ );
+ }),
tidyAssets: adminProcedure.mutation(async () => {
await TidyAssetsQueue.enqueue({
cleanDanglingAssets: true,