AI and Food

This commit is contained in:
2024-09-15 01:38:51 -04:00
parent 39873ab767
commit f8ad3b2f72
14 changed files with 344 additions and 193 deletions

View File

@@ -1,18 +1,24 @@
import APIRoute from "../APIRoute.js";
export default class UsersAPI extends APIRoute {
import FDAI from "../ai.js";
const ai = new FDAI();
export default class RecipeAPI extends APIRoute {
constructor() {
super('/recipes');
this.addSubRoute('/create', 'post', createRecipe);
this.addSubRoute('/create', 'post', this.createRecipe);
this.addSubRoute('/:id', 'get', this.get);
this.addSubRoute('/:id/rate', 'post', this.rate);
}
async get(req, res) {
res.send('GET request');
}
let db = req.app.get('mongo').recipes;
async post(req, res) {
res.send('POST request');
let result = await db.get(req.params.id);
res.send(result);
}
async createRecipe(req, res) {
@@ -20,16 +26,37 @@ export default class UsersAPI extends APIRoute {
let db = req.app.get('mongo').recipes;
let result = await db.create({
userID: recipe.userID,
ingredients: recipe.ingredients,
productName: recipe.productName,
nutritionFacts: recipe.nutritionFacts,
rating: recipe.rating,
cuisine: recipe.cuisine,
expense: recipe.expense,
mealType: recipe.mealType
});
let aiResult = await ai.suggestFood(recipe.currentQuestion, recipe.answers, recipe.restrictions);
let suggestFood = JSON.parse(aiResult.response);
let result = await db.create(suggestFood);
res.json(result);
}
async rate(req, res) {
let db = req.app.get('mongo').recipes;
let recipe = await db.get(req.params.id);
if (!recipe) {
res.status(404).send('Recipe not found');
return;
}
let rating = req.body.rating;
if (rating < 0 || rating > 5) {
res.status(400).send('Rating must be between 0 and 5');
return;
}
recipe.rating = rating;
let result = await db.update(req.params.id, { rating: rating });
res.send(result);
}
}