feat: initial refactor to use marka as backend
This commit is contained in:
@@ -17,25 +17,31 @@ export const IngredientGroupSchema = z.object({
|
||||
export type IngredientGroup = z.infer<typeof IngredientGroupSchema>;
|
||||
|
||||
const recipeSchema = z.object({
|
||||
title: z.string().describe(
|
||||
"Title of the Recipe, without the name of the website or author",
|
||||
),
|
||||
image: z.string().describe("URL of the main image of the recipe"),
|
||||
author: z.string().describe("author of the Recipe (optional)"),
|
||||
description: z.string().describe("Optional, short description of the recipe"),
|
||||
ingredients: z.array(z.union([IngredientSchema, IngredientGroupSchema]))
|
||||
.describe("List of ingredients"),
|
||||
instructions: z.array(z.string()).describe("List of instructions"),
|
||||
servings: z.number().describe("Amount of Portions"),
|
||||
prepTime: z.number().describe("Preparation time in minutes"),
|
||||
cookTime: z.number().describe("Cooking time in minutes"),
|
||||
totalTime: z.number().describe("Total time in minutes"),
|
||||
tags: z.array(z.string()).describe(
|
||||
"List of tags (e.g., ['vegan', 'dessert'])",
|
||||
),
|
||||
notes: z.array(z.string()).describe("Optional notes about the recipe"),
|
||||
name: z.string(),
|
||||
content: z.object({
|
||||
_type: z.literal("Recipe"),
|
||||
name: z.string().describe(
|
||||
"Title of the Recipe, without the name of the website or author",
|
||||
),
|
||||
description: z.string().describe(
|
||||
"Optional, short description of the recipe",
|
||||
),
|
||||
image: z.string().describe("URL of the main image of the recipe"),
|
||||
author: z.object({
|
||||
_type: z.literal("Person"),
|
||||
name: z.string().describe("author of the Recipe (optional)"),
|
||||
}),
|
||||
recipeEngredient: z.array(z.string())
|
||||
.describe("List of ingredients"),
|
||||
recipeInstructions: z.array(z.string()).describe("List of instructions"),
|
||||
recipeYield: z.number().describe("Amount of Portions"),
|
||||
prepTime: z.number().describe("Preparation time in minutes"),
|
||||
cookTime: z.number().describe("Cooking time in minutes"),
|
||||
}),
|
||||
});
|
||||
|
||||
export type Recipe = z.infer<typeof recipeSchema>;
|
||||
|
||||
const noRecipeSchema = z.object({
|
||||
errorMessages: z.array(z.string()).describe(
|
||||
"List of error messages, if no recipe was found",
|
||||
@@ -46,12 +52,13 @@ export const recipeResponseSchema = z.union([recipeSchema, noRecipeSchema]);
|
||||
|
||||
export function isValidRecipe(
|
||||
recipe:
|
||||
| { ingredients?: unknown[]; instructions?: string[]; name?: string }
|
||||
| Recipe
|
||||
| null
|
||||
| undefined,
|
||||
) {
|
||||
return recipe?.ingredients?.length && recipe.ingredients.length > 1 &&
|
||||
recipe?.instructions?.length &&
|
||||
return recipe?.content?.recipeIngredient?.length &&
|
||||
recipe?.content?.recipeIngredient.length > 1 &&
|
||||
recipe?.content?.recipeInstructions?.length &&
|
||||
recipe.name?.length;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user