diff options
| author | Mohamed Bassem <me@mbassem.com> | 2025-10-26 09:58:51 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-26 09:58:51 +0000 |
| commit | 6ea5dd194e7be62c1a51566f31808be076d3b139 (patch) | |
| tree | 3a7d207bfd78a4e18d9ef135c7b5fef1106a318f /packages/shared-server/src/queues.ts | |
| parent | 046c29dcf1083f0ab89b080f7696e6d642a6bd17 (diff) | |
| download | karakeep-6ea5dd194e7be62c1a51566f31808be076d3b139.tar.zst | |
refactor: generalize tidy assets queue into admin maintenance (#2059)
* refactor: generalize admin maintenance queue
* more fixes
Diffstat (limited to 'packages/shared-server/src/queues.ts')
| -rw-r--r-- | packages/shared-server/src/queues.ts | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/packages/shared-server/src/queues.ts b/packages/shared-server/src/queues.ts index a666446e..813b9c3b 100644 --- a/packages/shared-server/src/queues.ts +++ b/packages/shared-server/src/queues.ts @@ -67,21 +67,34 @@ export const SearchIndexingQueue = keepFailedJobs: false, }); -// Tidy Assets Worker +// Admin maintenance worker export const zTidyAssetsRequestSchema = z.object({ cleanDanglingAssets: z.boolean().optional().default(false), syncAssetMetadata: z.boolean().optional().default(false), }); export type ZTidyAssetsRequest = z.infer<typeof zTidyAssetsRequestSchema>; -export const TidyAssetsQueue = QUEUE_CLIENT.createQueue<ZTidyAssetsRequest>( - "tidy_assets_queue", - { + +export const zAdminMaintenanceTaskSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal("tidy_assets"), + args: zTidyAssetsRequestSchema, + }), +]); + +export type ZAdminMaintenanceTask = z.infer<typeof zAdminMaintenanceTaskSchema>; +export type ZAdminMaintenanceTaskType = ZAdminMaintenanceTask["type"]; +export type ZAdminMaintenanceTidyAssetsTask = Extract< + ZAdminMaintenanceTask, + { type: "tidy_assets" } +>; + +export const AdminMaintenanceQueue = + QUEUE_CLIENT.createQueue<ZAdminMaintenanceTask>("admin_maintenance_queue", { defaultJobArgs: { numRetries: 1, }, keepFailedJobs: false, - }, -); + }); export async function triggerSearchReindex( bookmarkId: string, |
