diff options
Diffstat (limited to 'app/routes/api-import.tsx')
| -rw-r--r-- | app/routes/api-import.tsx | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/app/routes/api-import.tsx b/app/routes/api-import.tsx new file mode 100644 index 0000000..e28a7db --- /dev/null +++ b/app/routes/api-import.tsx @@ -0,0 +1,30 @@ +import type { ActionFunctionArgs } from "react-router"; +import { importDb, type DbExport } from "~/lib/db.server"; + +export async function action({ request }: ActionFunctionArgs) { + if (request.method !== "POST") { + return Response.json({ error: "Method not allowed" }, { status: 405 }); + } + + let data: DbExport; + try { + data = await request.json(); + } catch { + return Response.json({ error: "Invalid JSON body" }, { status: 400 }); + } + + if (!data || data.version !== 1) { + return Response.json({ error: "Invalid or unsupported export format (expected version 1)" }, { status: 400 }); + } + + try { + const result = importDb(data); + return Response.json({ ok: true, imported: result }); + } catch (e) { + return Response.json({ error: e instanceof Error ? e.message : "Import failed" }, { status: 500 }); + } +} + +export default function () { + return null; +} |
