Files
formulation/src/application/pages/api/v1/convert.ts
T
nicholasandnicholas 2a1e16ed30
Build & Deploy Formulation / Build & Push Image (push) Failing after 15s
Build & Deploy Formulation / deploy (push) Skipped
add core features (#14)
Reviewed-on: #14
Co-authored-by: Nicholas Ward <nicholaspward@outlook.com>
2026-08-18 18:22:34 -05:00

37 lines
1.1 KiB
TypeScript

import type { APIRoute } from "astro";
import { openDatabase } from "../../../../lib/database";
import { createMcpTools } from "../../../../mcp/tools";
export const prerender = false;
export const POST: APIRoute = async ({ request }) => {
const database = openDatabase({ readOnly: true });
if (!database) return Response.json({ success: false, error: "Database unavailable." }, { status: 503 });
try {
const body = await request.json();
if (!body.quantity || !body.from_unit || !body.to_unit) {
return Response.json(
{ success: false, error: "Required fields: quantity, from_unit, to_unit" },
{ status: 400 }
);
}
const tools = createMcpTools(() => database);
const result = tools.convertUnits({
ingredient_id: body.ingredient_id,
quantity: Number(body.quantity),
from_unit: body.from_unit,
to_unit: body.to_unit,
});
return Response.json({ success: true, data: result });
} catch (error) {
return Response.json(
{ success: false, error: error instanceof Error ? error.message : "Conversion failed." },
{ status: 400 }
);
} finally {
database.close();
}
};