import { PRICE, PrismaClient } from "@prisma/client"; import Header from "../components/Header"; import RestaurantCard from "./components/RestaurantCard"; import SearchSideBar from "./components/SearchSideBar"; const prisma = new PrismaClient(); const fetchRestaurants = (searchParams: {city?: string, location?: string, cuisine?: string, price?: PRICE} | undefined) => { const select = { id: true, name: true, main_image: true, price: true, cuisine: true, location: true, slug: true } if (!searchParams) return prisma.restaurant.findMany({select}); return prisma.restaurant.findMany({ where: { location: { name: { equals: searchParams.city ? searchParams.city.toLowerCase() : undefined } }, cuisine: { name: { equals: searchParams.cuisine ? searchParams.cuisine : undefined } }, price: { equals: searchParams.price ? searchParams.price : undefined } }, select }) } const fetchLocations = () => { return prisma.location.findMany({select: {name: true}}) } const fetchCuisines = () => { return prisma.cuisine.findMany({select: {name: true}}) } export default async function Search({searchParams}: {searchParams: {city?: string, location?: string, cuisine?: string, price?: PRICE}}) { const restaurants = await fetchRestaurants(searchParams) const cuisines = await fetchCuisines() const locations = await fetchLocations() // console.log(restaurants) return ( <>
{/* @ts-expect-error Server Component */}
{ restaurants.length ? restaurants.map(restaurant => { return }) :

No restaurants

}
); }