From 6ea5dd194e7be62c1a51566f31808be076d3b139 Mon Sep 17 00:00:00 2001 From: Mohamed Bassem Date: Sun, 26 Oct 2025 09:58:51 +0000 Subject: refactor: generalize tidy assets queue into admin maintenance (#2059) * refactor: generalize admin maintenance queue * more fixes --- packages/shared-server/src/queues.ts | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'packages/shared-server/src/queues.ts') 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; -export const TidyAssetsQueue = QUEUE_CLIENT.createQueue( - "tidy_assets_queue", - { + +export const zAdminMaintenanceTaskSchema = z.discriminatedUnion("type", [ + z.object({ + type: z.literal("tidy_assets"), + args: zTidyAssetsRequestSchema, + }), +]); + +export type ZAdminMaintenanceTask = z.infer; +export type ZAdminMaintenanceTaskType = ZAdminMaintenanceTask["type"]; +export type ZAdminMaintenanceTidyAssetsTask = Extract< + ZAdminMaintenanceTask, + { type: "tidy_assets" } +>; + +export const AdminMaintenanceQueue = + QUEUE_CLIENT.createQueue("admin_maintenance_queue", { defaultJobArgs: { numRetries: 1, }, keepFailedJobs: false, - }, -); + }); export async function triggerSearchReindex( bookmarkId: string, -- cgit v1.2.3-70-g09d2