aboutsummaryrefslogtreecommitdiffstats
path: root/packages/shared-server
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-10-26 09:58:51 +0000
committerGitHub <noreply@github.com>2025-10-26 09:58:51 +0000
commit6ea5dd194e7be62c1a51566f31808be076d3b139 (patch)
tree3a7d207bfd78a4e18d9ef135c7b5fef1106a318f /packages/shared-server
parent046c29dcf1083f0ab89b080f7696e6d642a6bd17 (diff)
downloadkarakeep-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')
-rw-r--r--packages/shared-server/src/queues.ts25
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,