// server/routes/db.ts import { Hono } from "hono"; import { createBackup, prepareRestore, dbInfo } from "../services/dbBackup.js"; export const dbRoutes = new Hono(); // Métadonnées de la base (taille, date, restauration en attente). dbRoutes.get("/info", (c) => c.json(dbInfo())); // Télécharge une archive cohérente de la base courante. dbRoutes.get("/backup", () => { const { buffer, filename } = createBackup(); return new Response(new Uint8Array(buffer), { headers: { "Content-Type": "application/octet-stream", "Content-Disposition": `attachment; filename="${filename}"`, "Content-Length": String(buffer.length), }, }); }); // Restaure depuis une archive uploadée (corps brut). Appliquée au prochain démarrage. dbRoutes.post("/restore", async (c) => { try { const ab = await c.req.arrayBuffer(); if (!ab.byteLength) return c.json({ error: "Archive vide" }, 400); const { safetyBackup } = prepareRestore(Buffer.from(ab)); return c.json({ ok: true, restartRequired: true, safetyBackup, message: "Restauration préparée. Redémarrez le serveur pour l'appliquer.", }); } catch (err) { return c.json({ error: (err as Error).message }, 400); } });