import type { APIRoute } from "astro"; import { mkdir, readdir, writeFile } from "node:fs/promises"; import { join } from "node:path"; const DATA_ROOT = join(process.env.REPO_ROOT ?? "/Users/ace/palacering", "palaces", "manglasabang", "palaceappsdata", "palacetravel"); export const POST: APIRoute = async ({ request }) => { const url = new URL(request.url); const tripId = url.searchParams.get("tripId"); if (!tripId || tripId.includes("..")) { return new Response("Bad request", { status: 400 }); } try { const { dayIndex, entry } = await request.json(); if (typeof dayIndex !== "number" || !entry) { return new Response("Bad request: expected { dayIndex, entry }", { status: 400 }); } const dayDir = join(DATA_ROOT, tripId, "actuals", `day-${dayIndex + 1}`); await mkdir(dayDir, { recursive: true }); const existing = (await readdir(dayDir).catch(() => [])) .filter(f => f.startsWith("entry-") && f.endsWith(".json")); const num = String(existing.length + 1).padStart(3, "0"); await writeFile(join(dayDir, `entry-${num}.json`), JSON.stringify(entry, null, 2)); return new Response(JSON.stringify({ ok: true }), { headers: { "Content-Type": "application/json" }, }); } catch (e) { return new Response(JSON.stringify({ error: String(e) }), { status: 500 }); } };