import { useValidatedParams, 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 { questId } = await useValidatedParams( event, z.object({ questId: zh.numAsString }) ); const quest = await prisma.huntQuest.findUnique({ where: { id: questId, OR: [ { hunt: { creatorId: userId } }, { hunt: { members: { some: { memberId: userId } } } } ] }, omit: { huntId: true, pictureId: true, order: true }, include: { hunt: { select: { name_de: true, name_en: true, id: true } }, answers: { select: { id: true, text: true, final: true, updatedAt: true, lang: true, team: { select: { id: true, name: true } }, review: { select: { score: true, review: true, internalNote: true, rankingValue: true, showcase: true, updatedAt: true, reviewer: { select: { name: true, id: true } } } }, member: { select: { name: true, id: true } }, picture: { select: { url: true, createdAt: true } } }, orderBy: [ { final: 'desc' }, { review: { rankingValue: { sort: 'desc', nulls: 'last' } } }, { review: { score: { sort: 'desc', nulls: 'last' } } }, { updatedAt: 'desc' } ] } } }); if (!quest) { throw createError({ status: 404, statusText: 'Not found!' }); } return quest; });