remix-demo
react router (remix) demo
git clone https://9o.is/git/remix-demo.git
food.server.ts
(1357B)
1 import type { Params } from "@remix-run/react";
2 import { json } from "@remix-run/server-runtime";
3 import { getFoodByName, searchFoodNames } from "~/services/nutritionix.server";
4 import { requireUserId } from "~/session.server";
5
6 export async function foodsByName(request: Request) {
7 await requireUserId(request);
8 const query = new URL(request.url).searchParams.get("query");
9
10 if (!query) {
11 return json({ error: { query: "'query' query parameter is missing" } });
12 }
13
14 try {
15 return json(await searchFoodNames(query));
16 } catch (error) {
17 console.error("Failed to list food names from nutrition api:", error);
18 throw json({ error: "Failed to list food names" }, { status: 500 });
19 }
20 }
21
22 export async function foodByName(request: Request, params: Params) {
23 await requireUserId(request);
24 const foodName = params.name;
25
26 if (!foodName) {
27 return json(
28 { error: { query: "Food name parameter is missing" } },
29 { status: 422 }
30 );
31 }
32
33 try {
34 const food = await getFoodByName(foodName);
35
36 if (!food) {
37 return json(
38 { error: { name: "Food name does not exist" } },
39 { status: 404 }
40 );
41 }
42
43 return json(food);
44 } catch (error) {
45 console.error("Failed to get food from nutrition api:", error);
46 throw json({ error: "Failed to get food nutrition" }, { status: 500 });
47 }
48 }