import { useValidatedParams, useValidatedQuery, z, zh } from 'h3-zod'; import prisma from '~~/lib/prisma'; export default defineEventHandler(async (event) => { const user = await requireUserSession(event); if (user.user.role !== 'ADMIN') { throw createError({ status: 403, statusText: 'Not allowed!' }); } const userId = user.user.id; const { huntId } = await useValidatedParams( event, z.object({ huntId: zh.numAsString }) ); const hunt = await prisma.hunt.findUnique({ where: { id: huntId, OR: [ { creatorId: userId }, { members: { some: { memberId: userId } } } ] }, select: { id: true } }); if (!hunt) { throw createError({ status: 404, statusText: 'Not found!' }); } const { email } = await useValidatedQuery( event, z.object({ email: z.string().trim().default('') }) ); return prisma.user.findMany({ select: { email: true, name: true, id: true }, where: { email: { contains: email }, teamsOwner: { none: { huntId } }, teamsMember: { none: { team: { huntId } } }, huntsMember: { none: { huntId } }, huntsCreated: { none: { id: huntId } } }, take: 10, orderBy: { createdAt: 'desc' } }); });