reorg jobqueue to worker

This commit is contained in:
Alex Holliday committed 2026-06-10 09:30:14 -07:00
1 parent c8c4bac2c7
commit 2bf3c08f3c
14 files changed
+77 -77

No files matched your search

+66
View File
@@ -0,0 +1,66 @@
import { Monitor } from "@/domain/monitors/monitor.types.js";
import { QueueWorker } from "@/domain/queue-workers/queue-worker.type.js";
export type WorkerJobFailure = {
monitorId: string | number;
monitorUrl: string | null;
monitorType: string | null;
failedAt: number | null;
failCount: number;
failReason: string | null;
};
export type WorkerMetrics = {
jobs: number;
activeJobs: number;
failingJobs: number;
jobsWithFailures: WorkerJobFailure[];
totalRuns: number;
totalFailures: number;
workers: QueueWorker[];
};
export type WorkerJobSummary = {
monitorId: string | number;
monitorUrl: string | null;
monitorType: string | null;
monitorInterval: number | null;
monitorGeoInterval: number | null;
monitorActive: boolean | null;
active: boolean;
lockedBy: string | null;
lockedUntil: number | null;
lockedAt: number | null;
runCount: number;
failCount: number;
failReason: string | null;
lastRunAt: number | null;
lastFinishedAt: number | null;
lastRunTook: number | null;
lastFailedAt: number | null;
repeat: number | null;
};
export type WorkerJobsPagination = {
page?: number;
rowsPerPage?: number;
};
export type WorkerJobsPage = {
jobs: WorkerJobSummary[];
count: number;
};
export interface IWorker {
readonly serviceName: string;
init(): Promise<boolean>;
addJob(monitorId: string, monitor: Monitor): Promise<void>;
deleteJob(monitor: Monitor): Promise<void>;
pauseJob(monitor: Monitor): Promise<void>;
resumeJob(monitor: Monitor): Promise<void>;
updateJob(monitor: Monitor): Promise<void>;
shutdown(): Promise<void>;
getMetrics(): Promise<WorkerMetrics>;
getJobs(pagination: WorkerJobsPagination): Promise<WorkerJobsPage>;
flushQueues(): Promise<{ success: boolean }>;
}