Skip to content
Snippets Groups Projects
route.ts 1.14 KiB
Newer Older
Yusuf Akgül's avatar
Yusuf Akgül committed
import { NextResponse } from "next/server"
import { z } from "zod"

import { db } from "@/lib/db"

export async function GET(request: Request) {
    const { searchParams } = new URL(request.url)
    const query = searchParams.get("query") as string

    const querySchema = z.string().min(1)
    const zod = querySchema.safeParse(query)

    if (!zod.success) {
        return NextResponse.json(zod.error.formErrors, { status: 400 })
    }

    try {
        const people = await db.user.findMany({
            where: {
                OR: [{
                    username: {
                        contains: query,
                        mode: "insensitive",
                    },
                },

                {
                    name: {
                        contains: query,
                        mode: "insensitive",
                    },
                }],
            },

            take: 3,

            include: {
                followers: true,
            },
        })

        return NextResponse.json(people, { status: 200 })
    } catch (error: any) {
        return NextResponse.json({ error: error.message }, { status: 500 })
    }
}