diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-05-18 20:22:59 +0000 |
|---|---|---|
| committer | Mohamed Bassem <me@mbassem.com> | 2025-05-18 20:22:59 +0000 |
| commit | 2743d9e38ecfdbf757d4d2f97bcf09d601245b59 (patch) | |
| tree | 3119581aafce5321aaba9719ba3b2597d000d564 /apps/workers/tidyAssetsWorker.ts | |
| parent | a5ae67c241d8cdd452acd4d98800ec61740c041f (diff) | |
| download | karakeep-2743d9e38ecfdbf757d4d2f97bcf09d601245b59.tar.zst | |
feat: Add AI auto summarization. Fixes #1163
Diffstat (limited to 'apps/workers/tidyAssetsWorker.ts')
| -rw-r--r-- | apps/workers/tidyAssetsWorker.ts | 107 |
1 files changed, 0 insertions, 107 deletions
diff --git a/apps/workers/tidyAssetsWorker.ts b/apps/workers/tidyAssetsWorker.ts deleted file mode 100644 index d4c8abdb..00000000 --- a/apps/workers/tidyAssetsWorker.ts +++ /dev/null @@ -1,107 +0,0 @@ -import { eq } from "drizzle-orm"; -import { DequeuedJob, Runner } from "liteque"; - -import { db } from "@karakeep/db"; -import { assets } from "@karakeep/db/schema"; -import { deleteAsset, getAllAssets } from "@karakeep/shared/assetdb"; -import logger from "@karakeep/shared/logger"; -import { - TidyAssetsQueue, - ZTidyAssetsRequest, - zTidyAssetsRequestSchema, -} from "@karakeep/shared/queues"; - -export class TidyAssetsWorker { - static build() { - logger.info("Starting tidy assets worker ..."); - const worker = new Runner<ZTidyAssetsRequest>( - TidyAssetsQueue, - { - run: runTidyAssets, - onComplete: (job) => { - const jobId = job.id; - logger.info(`[tidyAssets][${jobId}] Completed successfully`); - return Promise.resolve(); - }, - onError: (job) => { - const jobId = job.id; - logger.error( - `[tidyAssets][${jobId}] tidy assets job failed: ${job.error}\n${job.error.stack}`, - ); - return Promise.resolve(); - }, - }, - { - concurrency: 1, - pollIntervalMs: 1000, - timeoutSecs: 30, - }, - ); - - return worker; - } -} - -async function handleAsset( - asset: { - assetId: string; - userId: string; - size: number; - contentType: string; - fileName?: string | null; - }, - request: ZTidyAssetsRequest, - jobId: string, -) { - const dbRow = await db.query.assets.findFirst({ - where: eq(assets.id, asset.assetId), - }); - if (!dbRow) { - if (request.cleanDanglingAssets) { - await deleteAsset({ userId: asset.userId, assetId: asset.assetId }); - logger.info( - `[tidyAssets][${jobId}] Asset ${asset.assetId} not found in the database. Deleting it.`, - ); - } else { - logger.warn( - `[tidyAssets][${jobId}] Asset ${asset.assetId} not found in the database. Not deleting it because cleanDanglingAssets is false.`, - ); - } - return; - } - - if (request.syncAssetMetadata) { - await db - .update(assets) - .set({ - contentType: asset.contentType, - fileName: asset.fileName, - size: asset.size, - }) - .where(eq(assets.id, asset.assetId)); - logger.info( - `[tidyAssets][${jobId}] Updated metadata for asset ${asset.assetId}`, - ); - } -} - -async function runTidyAssets(job: DequeuedJob<ZTidyAssetsRequest>) { - const jobId = job.id; - - const request = zTidyAssetsRequestSchema.safeParse(job.data); - if (!request.success) { - throw new Error( - `[tidyAssets][${jobId}] Got malformed job request: ${request.error.toString()}`, - ); - } - - for await (const asset of getAllAssets()) { - try { - handleAsset(asset, request.data, jobId); - } catch (e) { - logger.error( - `[tidyAssets][${jobId}] Failed to tidy asset ${asset.assetId}: ${e}`, - ); - } - } -} |
