From 821a48dfe400e0d55ce0f809aa693160a711eef1 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Fri, 13 Dec 2024 21:37:51 +0100 Subject: [PATCH] handle random recipe page --- composables/useRecipeRandom.ts | 4 ++++ pages/[id].vue | 9 ++++++--- pages/random.vue | 15 --------------- server/api/recipes.get.ts | 13 ------------- server/trpc/routers/recipes.ts | 13 +++++++++++++ 5 files changed, 23 insertions(+), 31 deletions(-) create mode 100644 composables/useRecipeRandom.ts delete mode 100644 pages/random.vue delete mode 100644 server/api/recipes.get.ts diff --git a/composables/useRecipeRandom.ts b/composables/useRecipeRandom.ts new file mode 100644 index 0000000..6b4e2ce --- /dev/null +++ b/composables/useRecipeRandom.ts @@ -0,0 +1,4 @@ +export default function useRecipeRandom() { + const { $client } = useNuxtApp(); + return $client.recipeRandom.useQuery(); +} diff --git a/pages/[id].vue b/pages/[id].vue index b3866a1..8cf18eb 100644 --- a/pages/[id].vue +++ b/pages/[id].vue @@ -15,10 +15,13 @@ useHead({ const { params } = useRoute(); const routeParam = params.id; -const id = - typeof routeParam === "string" ? Number(routeParam) : Number(routeParam[0]); +const id = typeof routeParam === "string" ? routeParam : routeParam[0]; -const { data: recipe, status, error } = await useRecipeById(id); +const { + data: recipe, + status, + error, +} = id === "random" ? await useRecipeRandom() : await useRecipeById(Number(id)); if (error.value) { let statusCode = 400; diff --git a/pages/random.vue b/pages/random.vue deleted file mode 100644 index 46607ef..0000000 --- a/pages/random.vue +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/server/api/recipes.get.ts b/server/api/recipes.get.ts deleted file mode 100644 index fb80e2d..0000000 --- a/server/api/recipes.get.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { parseRecipeData } from "~/utils/recipes"; -import type { Meal } from "~/types/recipe"; - -export default defineEventHandler(async (_event) => { - const { apiUrl } = useRuntimeConfig(); - - const data = await $fetch<{ meals: Meal[] }>( - new URL("random.php", apiUrl).toString(), - ); - - const recipes = parseRecipeData(data); - return recipes[0]; -}); diff --git a/server/trpc/routers/recipes.ts b/server/trpc/routers/recipes.ts index 0418fab..91a0070 100644 --- a/server/trpc/routers/recipes.ts +++ b/server/trpc/routers/recipes.ts @@ -29,4 +29,17 @@ export const recipeRouter = router({ const recipes = parseRecipeData(data); return recipes[0]; }), + recipeRandom: publicProcedure.query(async () => { + const data = await $fetch<{ meals: Meal[] }>( + new URL("random.php", apiUrl).toString(), + ); + if (!data?.meals) { + throw createError({ + statusCode: 500, + }); + } + + const recipes = parseRecipeData(data); + return recipes[0]; + }), });