From 2df519fa849e6bcb0d7c4f950f5eb3aa0821f1d7 Mon Sep 17 00:00:00 2001 From: Dominik Stahl Date: Wed, 18 Jun 2025 09:56:03 +0200 Subject: [PATCH] fix(api): parse search api url params --- src/app/api/search/user/route.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/app/api/search/user/route.ts b/src/app/api/search/user/route.ts index 0f6d0f5..74d6e95 100644 --- a/src/app/api/search/user/route.ts +++ b/src/app/api/search/user/route.ts @@ -5,8 +5,8 @@ import { z } from 'zod/v4'; const getSearchUserSchema = z.object({ query: z.string().optional().default(''), - count: z.int().min(1).max(100).default(10), - page: z.int().min(1).default(1), + count: z.coerce.number().min(1).max(100).default(10), + page: z.coerce.number().min(1).default(1), sort_by: z .enum(['created_at', 'name', 'first_name', 'last_name', 'id']) .optional() @@ -109,7 +109,7 @@ export const GET = auth(async function GET(req) { { status: 404 }, ); - const dataRaw = new URL(req.url).searchParams; + const dataRaw = Object.fromEntries(new URL(req.url).searchParams); const data = await getSearchUserSchema.safeParseAsync(dataRaw); if (!data.success) { return NextResponse.json( @@ -142,13 +142,23 @@ export const GET = auth(async function GET(req) { first_name: true, last_name: true, timezone: true, - image: true, + image: true + }, + }); + + const userCount = await prisma.user.count({ + where: { + OR: [ + { name: { contains: query } }, + { first_name: { contains: query } }, + { last_name: { contains: query } }, + ], }, }); return NextResponse.json({ success: true, users: dbUsers, - count: dbUsers.length, + count: userCount, }); });