feat: url scraper to recipe
This commit is contained in:
39
lib/recipeSchema.ts
Normal file
39
lib/recipeSchema.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { z } from "npm:zod";
|
||||
|
||||
export const IngredientSchema = z.object({
|
||||
quantity: z.string().describe(
|
||||
"e.g., '2', '1/2', or an empty string for 'to taste'",
|
||||
),
|
||||
unit: z.string().describe('e.g., "g", "tbsp", "cup"'),
|
||||
name: z.string().describe('e.g., "sugar", "flour"'), //
|
||||
note: z.string().describe('optional, e.g., "sifted", "chopped finely"'),
|
||||
});
|
||||
export type Ingredient = z.infer<typeof IngredientSchema>;
|
||||
|
||||
export const IngredientGroupSchema = z.object({
|
||||
name: z.string(),
|
||||
items: z.array(IngredientSchema),
|
||||
});
|
||||
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"),
|
||||
});
|
||||
|
||||
export default recipeSchema;
|
||||
Reference in New Issue
Block a user