// server/routes/schedules.ts import { Hono } from "hono"; import { listSchedules, getSchedule, createSchedule, updateSchedule, deleteSchedule, runSchedule, type ScheduleInput, } from "../services/scheduler.js"; export const schedulesRoutes = new Hono(); schedulesRoutes.get("/", (c) => c.json(listSchedules())); schedulesRoutes.post("/", async (c) => { const body = (await c.req.json()) as ScheduleInput; try { return c.json(createSchedule(body), 201); } catch (err) { return c.json({ error: (err as Error).message }, 400); } }); schedulesRoutes.get("/:id", (c) => { const s = getSchedule(c.req.param("id")); return s ? c.json(s) : c.json({ error: "Schedule introuvable" }, 404); }); schedulesRoutes.patch("/:id", async (c) => { const body = (await c.req.json()) as Partial; try { return c.json(updateSchedule(c.req.param("id"), body)); } catch (err) { return c.json({ error: (err as Error).message }, 400); } }); schedulesRoutes.delete("/:id", (c) => { deleteSchedule(c.req.param("id")); return c.json({ ok: true }); }); // Lancement immédiat (hors planning). schedulesRoutes.post("/:id/run", (c) => { runSchedule(c.req.param("id")).catch((err) => console.error("[schedule run]", (err as Error).message)); return c.json({ ok: true }, 202); });