diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-07-13 10:33:47 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-07-13 20:44:00 +0000 |
| commit | 4ba3e8047a5b1f160169617187436c09e91662ec (patch) | |
| tree | 6596ef1c5a66840e335289f9c9447ab07671cca2 | |
| parent | d1d5263486f96db578aad918a59007045c3c077f (diff) | |
| download | karakeep-4ba3e8047a5b1f160169617187436c09e91662ec.tar.zst | |
fix: Fix the types of the bookmark types in the db query
| -rw-r--r-- | apps/workers/workers/assetPreprocessingWorker.ts | 10 | ||||
| -rw-r--r-- | apps/workers/workers/inference/tagging.ts | 12 | ||||
| -rw-r--r-- | packages/db/schema.ts | 15 | ||||
| -rw-r--r-- | packages/trpc/routers/bookmarks.ts | 6 |
4 files changed, 27 insertions, 16 deletions
diff --git a/apps/workers/workers/assetPreprocessingWorker.ts b/apps/workers/workers/assetPreprocessingWorker.ts index c3ecd1e0..f36908cc 100644 --- a/apps/workers/workers/assetPreprocessingWorker.ts +++ b/apps/workers/workers/assetPreprocessingWorker.ts @@ -189,6 +189,11 @@ async function extractAndSaveImageText( bookmark: NonNullable<Awaited<ReturnType<typeof getBookmark>>>, isFixMode: boolean, ): Promise<boolean> { + if (!bookmark.asset) { + throw new Error( + `[assetPreprocessing][${jobId}] Bookmark ${bookmark.id} has no asset attached`, + ); + } { const alreadyHasText = !!bookmark.asset.content; if (alreadyHasText && isFixMode) { @@ -232,6 +237,11 @@ async function extractAndSavePDFText( bookmark: NonNullable<Awaited<ReturnType<typeof getBookmark>>>, isFixMode: boolean, ): Promise<boolean> { + if (!bookmark.asset) { + throw new Error( + `[assetPreprocessing][${jobId}] Bookmark ${bookmark.id} has no asset attached`, + ); + } { const alreadyHasText = !!bookmark.asset.content; if (alreadyHasText && isFixMode) { diff --git a/apps/workers/workers/inference/tagging.ts b/apps/workers/workers/inference/tagging.ts index 3c7b5adb..47419a1f 100644 --- a/apps/workers/workers/inference/tagging.ts +++ b/apps/workers/workers/inference/tagging.ts @@ -118,6 +118,11 @@ async function inferTagsFromImage( inferenceClient: InferenceClient, abortSignal: AbortSignal, ) { + if (!bookmark.asset) { + throw new Error( + `[inference][${jobId}] Bookmark ${bookmark.id} has no asset attached`, + ); + } const { asset, metadata } = await readAsset({ userId: bookmark.userId, assetId: bookmark.asset.assetId, @@ -199,11 +204,16 @@ function containsTagsPlaceholder(prompts: { text: string }[]): boolean { } async function inferTagsFromPDF( - _jobId: string, + jobId: string, bookmark: NonNullable<Awaited<ReturnType<typeof fetchBookmark>>>, inferenceClient: InferenceClient, abortSignal: AbortSignal, ) { + if (!bookmark.asset) { + throw new Error( + `[inference][${jobId}] Bookmark ${bookmark.id} has no asset attached`, + ); + } const prompt = buildTextPrompt( serverConfig.inference.inferredTagLang, await fetchCustomPrompts(bookmark.userId, "text"), diff --git a/packages/db/schema.ts b/packages/db/schema.ts index 6dacdec6..540c4c82 100644 --- a/packages/db/schema.ts +++ b/packages/db/schema.ts @@ -649,18 +649,9 @@ export const bookmarkRelations = relations(bookmarks, ({ many, one }) => ({ fields: [bookmarks.userId], references: [users.id], }), - link: one(bookmarkLinks, { - fields: [bookmarks.id], - references: [bookmarkLinks.id], - }), - text: one(bookmarkTexts, { - fields: [bookmarks.id], - references: [bookmarkTexts.id], - }), - asset: one(bookmarkAssets, { - fields: [bookmarks.id], - references: [bookmarkAssets.id], - }), + link: one(bookmarkLinks), + text: one(bookmarkTexts), + asset: one(bookmarkAssets), tagsOnBookmarks: many(tagsOnBookmarks), bookmarksInLists: many(bookmarksInLists), assets: many(assets), diff --git a/packages/trpc/routers/bookmarks.ts b/packages/trpc/routers/bookmarks.ts index 9aa9ec1e..ef6ce396 100644 --- a/packages/trpc/routers/bookmarks.ts +++ b/packages/trpc/routers/bookmarks.ts @@ -187,7 +187,7 @@ async function toZodSchema( let content: ZBookmarkContent = { type: BookmarkTypes.UNKNOWN, }; - if (bookmark.link) { + if (link) { content = { type: BookmarkTypes.LINK, screenshotAssetId: assets.find( @@ -219,7 +219,7 @@ async function toZodSchema( dateModified: link.dateModified, }; } - if (bookmark.text) { + if (text) { content = { type: BookmarkTypes.TEXT, // It's ok to include the text content as it's usually not big and is used to render the text bookmark card. @@ -227,7 +227,7 @@ async function toZodSchema( sourceUrl: text.sourceUrl, }; } - if (bookmark.asset) { + if (asset) { content = { type: BookmarkTypes.ASSET, assetType: asset.assetType, |
