Files
meal-tracker/server/routes/foods.js

40 lines
1.1 KiB
JavaScript

import axios from 'axios';
const OPENFOODFACTS_API = 'https://world.openfoodfacts.org/cgi/search.pl';
export default function setupRoutes(app) {
app.get('/api/foods/search', async (req, res) => {
const { q } = req.query;
if (!q) {
return res.json([]);
}
try {
const response = await axios.get(OPENFOODFACTS_API, {
params: {
search_terms: q,
search_simple: 1,
action: 'process',
json: 1,
page_size: 10
}
});
const products = response.data.products || [];
const foods = products.map(p => ({
name: p.product_name || p.product_name_en || 'Unknown',
calories: p.nutriments?.['energy-kcal_100g'] || 0,
protein: p.nutriments?.proteins_100g || 0,
carbs: p.nutriments?.carbohydrates_100g || 0,
fat: p.nutriments?.fat_100g || 0
})).filter(f => f.name !== 'Unknown' && f.calories > 0);
res.json(foods);
} catch (err) {
console.error(err);
res.status(503).json({ error: 'Food search unavailable' });
}
});
}