diff --git a/web/src/app/api/monitor/config/route.test.ts b/web/src/app/api/monitor/config/route.test.ts index cec2a27..21b2f34 100644 --- a/web/src/app/api/monitor/config/route.test.ts +++ b/web/src/app/api/monitor/config/route.test.ts @@ -34,3 +34,23 @@ describe("monitor config API", () => { expect(await prisma.config.count()).toBe(before); }); }); + +describe("monitor config — floor.jobDelaySeconds", () => { + it("defaults jobDelaySeconds to 0 and round-trips a new value", async () => { + const before = await (await GET()).json(); + expect(before["floor.jobDelaySeconds"]).toBe("0"); + + await PATCH( + new Request("http://localhost/api/monitor/config", { + method: "PATCH", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ "floor.jobDelaySeconds": "45" }), + }), + ); + + const stored = await prisma.config.findUnique({ where: { key: "floor.jobDelaySeconds" } }); + expect(stored?.value).toBe("45"); + const after = await (await GET()).json(); + expect(after["floor.jobDelaySeconds"]).toBe("45"); + }); +}); diff --git a/web/src/app/api/monitor/config/route.ts b/web/src/app/api/monitor/config/route.ts index e92bc0e..2f63cb8 100644 --- a/web/src/app/api/monitor/config/route.ts +++ b/web/src/app/api/monitor/config/route.ts @@ -6,6 +6,7 @@ const DEFAULTS: Record = { "monitor.retryIntervalHours": "6", "monitor.qualityCutoff": "2", "monitor.upgradeWindowDays": "14", + "floor.jobDelaySeconds": "0", }; export async function GET() { diff --git a/web/src/app/settings/settings-form.tsx b/web/src/app/settings/settings-form.tsx index 8f48202..729d50a 100644 --- a/web/src/app/settings/settings-form.tsx +++ b/web/src/app/settings/settings-form.tsx @@ -31,6 +31,7 @@ const MONITOR_FIELDS: [string, string][] = [ ["monitor.retryIntervalHours", "Retry interval (hours)"], ["monitor.qualityCutoff", "Quality cutoff"], ["monitor.upgradeWindowDays", "Upgrade window (days)"], + ["floor.jobDelaySeconds", "Delay between downloads (seconds)"], ]; export function SettingsForm() {