fix(api): parse search api url params
Some checks failed
container-scan / Container Scan (pull_request) Successful in 4m14s
docker-build / docker (pull_request) Failing after 9m43s

This commit is contained in:
Dominik 2025-06-18 09:56:03 +02:00
parent e4b3141d7a
commit 98cf490acd
Signed by: dominik
GPG key ID: 06A4003FC5049644

View file

@ -5,8 +5,8 @@ import { z } from 'zod/v4';
const getSearchUserSchema = z.object({ const getSearchUserSchema = z.object({
query: z.string().optional().default(''), query: z.string().optional().default(''),
count: z.int().min(1).max(100).default(10), count: z.coerce.number().min(1).max(100).default(10),
page: z.int().min(1).default(1), page: z.coerce.number().min(1).default(1),
sort_by: z sort_by: z
.enum(['created_at', 'name', 'first_name', 'last_name', 'id']) .enum(['created_at', 'name', 'first_name', 'last_name', 'id'])
.optional() .optional()
@ -109,7 +109,7 @@ export const GET = auth(async function GET(req) {
{ status: 404 }, { status: 404 },
); );
const dataRaw = new URL(req.url).searchParams; const dataRaw = Object.fromEntries(new URL(req.url).searchParams);
const data = await getSearchUserSchema.safeParseAsync(dataRaw); const data = await getSearchUserSchema.safeParseAsync(dataRaw);
if (!data.success) { if (!data.success) {
return NextResponse.json( return NextResponse.json(
@ -146,9 +146,19 @@ export const GET = auth(async function GET(req) {
}, },
}); });
const userCount = await prisma.user.count({
where: {
OR: [
{ name: { contains: query } },
{ first_name: { contains: query } },
{ last_name: { contains: query } },
],
},
});
return NextResponse.json({ return NextResponse.json({
success: true, success: true,
users: dbUsers, users: dbUsers,
count: dbUsers.length, count: userCount,
}); });
}); });