Files
Epicnabbo-Catalogus-Updated…/src/lib/admin/installation-state.ts
T

21 lines
728 B
TypeScript

export type DiagnosticState = "ok" | "failed" | "unknown" | "missing";
export function workerState(
value: string | null,
now = Date.now(),
): DiagnosticState {
if (!value) return "unknown";
const time = Date.parse(value);
if (!Number.isFinite(time) || time > now + 60000) return "unknown";
return now - time <= 120000 ? "ok" : "failed";
}
export function migrationState(
expected: string[],
applied: string[] | null,
): { state: DiagnosticState; pending: number | null } {
if (!expected.length || applied === null)
return { state: "unknown", pending: null };
const done = new Set(applied);
const pending = expected.filter((name) => !done.has(name)).length;
return { state: pending ? "failed" : "ok", pending };
}