import { notFound } from "next/navigation"; import { headers } from "next/headers"; import { auth } from "@/lib/auth/server"; import { db, recipes, eq, and } from "@epicure/db"; import { CookingMode } from "@/components/cooking-mode/cooking-mode"; type Params = { params: Promise<{ id: string }> }; export async function generateMetadata({ params }: Params) { const { id } = await params; const recipe = await db.query.recipes.findFirst({ where: eq(recipes.id, id) }); return { title: recipe ? `Cooking: ${recipe.title}` : "Cooking Mode" }; } export default async function CookPage({ params }: Params) { const { id } = await params; const session = await auth.api.getSession({ headers: await headers() }); if (!session) return null; const recipe = await db.query.recipes.findFirst({ where: and(eq(recipes.id, id), eq(recipes.authorId, session.user.id)), with: { steps: { orderBy: (t, { asc }) => asc(t.order) }, ingredients: { orderBy: (t, { asc }) => asc(t.order) }, }, }); if (!recipe || recipe.steps.length === 0) notFound(); return ( ({ id: s.id, instruction: s.instruction, timerSeconds: s.timerSeconds, }))} ingredients={recipe.ingredients.map((i) => ({ rawName: i.rawName, quantity: i.quantity, unit: i.unit, }))} /> ); }