Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion controller/barcodeScanningController.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const {
// 0048151623426
const checkAllergen = async (req, res) => {
const { user_id } = req.body;
const code = req.query.code;
const code = req.body?.barcode || req.query.code;

try {
if (!code) {
Expand Down
78 changes: 7 additions & 71 deletions controller/foodDataController.js
Original file line number Diff line number Diff line change
@@ -1,73 +1,9 @@
const normalizeId = require("../utils/normalizeId");
const FoodModel = require("../model/fooddata"); // Adjust path if needed

/**
* Food Database controller - stabilized.
*/

const getMealPlan = async (req, res) => {
const rawUserId = req.query?.user_id || req.query?.userId;

try {
if (!rawUserId) {
return res.status(400).json({ success: false, error: "User Id is required" });
}

const userId = normalizeId(rawUserId);

// Fetch from model
const mealPlan = await FoodModel.getMealPlanByUserId(userId);

return res.status(200).json({
success: true,
data: mealPlan || []
});
} catch (error) {
console.error("❌ getMealPlan error:", error);
return res.status(500).json({ success: false, error: "Failed to fetch meal plan", details: String(error.message || error) });
}
};

const createMealPlan = async (req, res) => {
const { user_id, meals } = req.body;

try {
if (!user_id) return res.status(400).json({ success: false, error: "user_id required" });

const userId = normalizeId(user_id);
const result = await FoodModel.createMealPlan(userId, meals);

return res.status(201).json({ success: true, data: result });
} catch (error) {
console.error("❌ createMealPlan error:", error);
return res.status(500).json({ success: false, error: "Failed to create meal plan", details: String(error.message || error) });
}
};

const getNutritionByBarcode = async (req, res) => {
const { barcode } = req.params;
try {
const data = await FoodModel.getNutritionByBarcode(barcode);

// If barcode not found, return 404 so clients can differentiate
if (!data) {
return res.status(404).json({ success: false, error: "Product not found" });
}

return res.status(200).json({ success: true, data });
} catch (error) {
console.error("❌ getNutritionByBarcode error:", error);
return res.status(500).json({ success: false, error: "Barcode lookup failed", details: String(error.message || error) });
}
};

module.exports = { getMealPlan, createMealPlan, getNutritionByBarcode };
const fetchAllDietaryRequirements = require("../model/fetchAllDietaryRequirements.js");
const fetchAllCuisines = require("../model/fetchAllCuisines.js");
const fetchAllAllergies = require("../model/fetchAllAllergies.js");
const fetchAllIngredients = require("../model/fetchAllIngredients.js");
const fetchAllCookingMethods = require("../model/fetchAllCookingMethods.js");
const fetchAllSpiceLevels = require("../model/fetchAllSpiceLevels.js");
const fetchAllDietaryRequirements = require("../model/fetchAllDietaryRequirements");
const fetchAllCuisines = require("../model/fetchAllCuisines");
const fetchAllAllergies = require("../model/fetchAllAllergies");
const fetchAllIngredients = require("../model/fetchAllIngredients");
const fetchAllCookingMethods = require("../model/fetchAllCookingMethods");
const fetchAllSpiceLevels = require("../model/fetchAllSpiceLevels");
const fetchAllHealthConditions = require("../model/fetchAllHealthConditions");
const logger = require("../utils/logger");

Expand Down Expand Up @@ -132,7 +68,7 @@ async function getCachedLookup(cacheKey, fetcher) {
}

function createLookupHandler(cacheKey, fetcher, label) {
return async (req, res) => {
return async (_req, res) => {
try {
const rows = await getCachedLookup(cacheKey, fetcher);
return res.status(200).json(rows);
Expand Down
12 changes: 10 additions & 2 deletions routes/fooddata.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
const express = require('express');
const router = express.Router();
const controller = require('../controller/foodDatabaseController');
const foodDatabaseController = require('../controller/foodDatabaseController');
const foodDataController = require('../controller/foodDataController');
const validate = require('../middleware/validate');
const { foodSearchQuery } = require('../validators/schemas');

router.get('/search', validate(foodSearchQuery, 'query'), controller.searchFood);
router.get('/search', validate(foodSearchQuery, 'query'), foodDatabaseController.searchFood);
router.get('/dietaryrequirements', foodDataController.getAllDietaryRequirements);
router.get('/cuisines', foodDataController.getAllCuisines);
router.get('/allergies', foodDataController.getAllAllergies);
router.get('/ingredients', foodDataController.getAllIngredients);
router.get('/cookingmethods', foodDataController.getAllCookingMethods);
router.get('/spicelevels', foodDataController.getAllSpiceLevels);
router.get('/healthconditions', foodDataController.getAllHealthConditions);

module.exports = router;
Loading