diff --git a/package.json b/package.json index 2f5a66e..08679dc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "homepage", - "version": "1.15.0", + "version": "1.16.0", "private": true, "type": "module", "scripts": { diff --git a/src/routes/api/nutrition/lookup/+server.ts b/src/routes/api/nutrition/lookup/+server.ts new file mode 100644 index 0000000..62f523e --- /dev/null +++ b/src/routes/api/nutrition/lookup/+server.ts @@ -0,0 +1,27 @@ +import { json, type RequestHandler } from '@sveltejs/kit'; +import { NUTRITION_DB } from '$lib/data/nutritionDb'; +import { BLS_DB } from '$lib/data/blsDb'; + +export const GET: RequestHandler = async ({ url }) => { + const source = url.searchParams.get('source'); + const id = url.searchParams.get('id'); + + if (!source || !id) { + return json({ error: 'source and id are required' }, { status: 400 }); + } + + if (source === 'bls') { + const entry = BLS_DB.find(e => e.blsCode === id); + if (!entry) return json({ error: 'Not found' }, { status: 404 }); + return json({ per100g: entry.per100g }); + } + + if (source === 'usda') { + const fdcId = Number(id); + const entry = NUTRITION_DB.find(e => e.fdcId === fdcId); + if (!entry) return json({ error: 'Not found' }, { status: 404 }); + return json({ per100g: entry.per100g, portions: entry.portions }); + } + + return json({ error: 'Invalid source' }, { status: 400 }); +}; diff --git a/src/routes/fitness/[nutrition=fitnessNutrition]/+page.svelte b/src/routes/fitness/[nutrition=fitnessNutrition]/+page.svelte index 8a46714..2e3a8cb 100644 --- a/src/routes/fitness/[nutrition=fitnessNutrition]/+page.svelte +++ b/src/routes/fitness/[nutrition=fitnessNutrition]/+page.svelte @@ -1,7 +1,7 @@ @@ -1399,6 +1514,72 @@ {/each} + + + @@ -1471,6 +1652,11 @@ {/if}