diff options
| author | MohamedBassem <me@mbassem.com> | 2024-10-13 00:17:55 +0000 |
|---|---|---|
| committer | MohamedBassem <me@mbassem.com> | 2024-10-13 00:17:55 +0000 |
| commit | 2ccc15ea8865966618cf804968a5ca14ae364345 (patch) | |
| tree | ea5b16118e486671547b6a273b72134c960418e8 | |
| parent | fb57f25762b053b4560e915b2bc8b65b71db1170 (diff) | |
| download | karakeep-2ccc15ea8865966618cf804968a5ca14ae364345.tar.zst | |
feature: Support regenerating AI tags only for failed bookmarks
| -rw-r--r-- | apps/web/components/dashboard/admin/AdminActions.tsx | 11 | ||||
| -rw-r--r-- | packages/trpc/routers/admin.ts | 29 |
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, |
