feat: per-source pause/stop controls for queue admin

Add operator pause/resume/stop/start for individual adapter sources,
persisted in queue_state. Pause freezes draining and retains jobs; stop
clears pending/backoff jobs and blocks re-enqueue until start. Wires admin
tRPC endpoints plus a clean two-row Actions layout in the queue admin page.
This commit is contained in:
Investor Flow Build
2026-08-12 22:39:23 -04:00
parent 0bc7b636e5
commit f7efea2178
7 changed files with 388 additions and 40 deletions
+28
View File
@@ -1707,6 +1707,34 @@ const adminRouter = router({
return { cleared };
}),
queueSourcePause: adminProcedure
.input(z.object({ source: z.string().min(1) }))
.mutation(({ ctx, input }) => {
ctx.queue.pauseSource(input.source);
return { ok: true, source: input.source };
}),
queueSourceResume: adminProcedure
.input(z.object({ source: z.string().min(1) }))
.mutation(({ ctx, input }) => {
ctx.queue.resumeSource(input.source);
return { ok: true, source: input.source };
}),
queueSourceStop: adminProcedure
.input(z.object({ source: z.string().min(1) }))
.mutation(({ ctx, input }) => {
const cleared = ctx.queue.stopSource(input.source);
return { ok: true, source: input.source, cleared };
}),
queueSourceStart: adminProcedure
.input(z.object({ source: z.string().min(1) }))
.mutation(({ ctx, input }) => {
ctx.queue.startSource(input.source);
return { ok: true, source: input.source };
}),
queueClearDone: adminProcedure
.input(z.object({ olderThanHours: z.number().min(1).max(336).optional().default(24) }))
.mutation(({ ctx, input }) => {