import { useValidatedBody, useValidatedParams, z, zh } from 'h3-zod'; import prisma from '~~/lib/prisma'; export default defineEventHandler(async (event) => { const user = await requireUserSession(event); const userId = user.user.id; const { huntId } = await useValidatedParams( event, z.object({ huntId: zh.numAsString }) ); const { updatedAt, ...data } = await useValidatedBody( event, z .object({ name_de: z.string().min(1).max(256).trim(), name_en: z.string().min(1).max(256).trim(), description_de: z.string().min(1).max(1000).trim(), description_en: z.string().min(1).max(1000).trim(), virtual: z.boolean(), public: z.boolean(), start: z.iso.datetime().nullable(), end: z.iso.datetime().nullable(), allowJoin: z.boolean(), revealQuests: z.boolean(), revealAnswers: z.boolean() }) .partial() .and( z.object({ updatedAt: z.iso.datetime() }) ) ); await prisma.hunt.update({ where: { id: huntId, updatedAt, members: { some: { memberId: userId } } }, data }); return {}; });