export async function onRequest(context) { const db = context.env.D1DB; if (context.params.storage[0] == "delete") { const deleteReq = context.params.storage[1]; await db.prepare("DELETE FROM data WHERE k=?").bind(deleteReq).run(); return new Response(); } const key = context.params.storage[0]; console.log(context); if (context.request.method == "POST") { const formData = await context.request.formData(); const value = formData.get("value"); console.log("Inserting", key, value); // this doesn't use numbered parameters because miniflare behaves differently because better-sqlite3 doesn't handled numbered params well // CF really needs named support and better-sqlite3 really needs to fix this console.log(await db.prepare("INSERT INTO data (k, v) VALUES (?,?) ON CONFLICT(k) DO UPDATE SET v=? WHERE k=?").bind(key, value, value, key).run()); return new Response(); } const value = await db.prepare("SELECT v FROM data WHERE k=?").bind(key).first("v"); return new Response(JSON.stringify(value)); }