+server.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import auth from "$lib/server/auth.js";
  2. import Recipe from "$lib/server/models/Recipe.js";
  3. import {error, json} from "@sveltejs/kit";
  4. export async function POST({request, cookies}){
  5. const user = await auth(cookies, false);
  6. const body = await request.json();
  7. if(!body.name) error(400, "Recipe name required");
  8. if(body.ingredients.length <= 0) error(400, "Ingredients required");
  9. if(body.steps.length <= 0) error(400, "Preparation steps required");
  10. for(let i = 0; i < body.ingredients.length; i++){
  11. if(!body.ingredients[i].name) error(400, "Ingredient name required");
  12. const qty = body.ingredients[i].quantity;
  13. if(qty === undefined || qty === null || qty === ""){
  14. delete body.ingredients[i].quantity;
  15. }else if(qty <= 0){
  16. error(400, "Quantity must be greater than 0");
  17. }
  18. if(!body.ingredients[i].unit) body.ingredients[i].unit = "";
  19. }
  20. const recipe = new Recipe({
  21. user: user._id,
  22. name: body.name,
  23. ingredients: body.ingredients,
  24. steps: body.steps,
  25. notes: body.notes,
  26. createdAt: new Date(),
  27. updatedAt: new Date(),
  28. private: body.private === true
  29. });
  30. await recipe.save();
  31. return json({id: recipe._id.toString()}, {status: 201});
  32. }