// server/routes/machines.ts import { Hono } from "hono"; import { listMachines, createMachine, deleteMachine, getMachineRow, getCreds, testConnection, type CreateMachineInput, } from "../services/machines.js"; import { refreshMachine, getLatestSnapshot } from "../services/refresh.js"; export const machinesRoutes = new Hono(); machinesRoutes.get("/", (c) => c.json(listMachines())); machinesRoutes.post("/", async (c) => { const body = (await c.req.json()) as CreateMachineInput; try { const m = await createMachine(body); return c.json(m, 201); } catch (err) { return c.json({ error: `Connexion échouée: ${(err as Error).message}` }, 400); } }); machinesRoutes.post("/:id/test-connection", async (c) => { const m = getMachineRow(c.req.param("id")); if (!m) return c.json({ error: "Machine introuvable" }, 404); try { return c.json(await testConnection(getCreds(m))); } catch (err) { return c.json({ error: (err as Error).message }, 400); } }); machinesRoutes.get("/:id/snapshot", (c) => { const snap = getLatestSnapshot(c.req.param("id")); return snap ? c.json(snap) : c.json({ error: "Aucun snapshot" }, 404); }); machinesRoutes.post("/:id/refresh", async (c) => { try { return c.json(await refreshMachine(c.req.param("id"))); } catch (err) { return c.json({ error: (err as Error).message }, 400); } }); machinesRoutes.delete("/:id", (c) => { deleteMachine(c.req.param("id")); return c.json({ ok: true }); });