import { useValidatedBody, z } from 'h3-zod'; import prisma from '~~/lib/prisma'; export default defineEventHandler(async (event) => { const user = await requireUserSession(event); if (user.user.role !== 'CREATOR' && user.user.role !== 'ADMIN') { throw createError({ statusCode: 403, statusMessage: 'Not allowed!' }); } const body = 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().max(1000).trim().default(''), description_en: z.string().max(1000).trim().default(''), virtual: z.boolean().default(false), start: z.iso.datetime().nullish(), end: z.iso.datetime().nullish(), allowJoin: z.boolean().default(false), revealQuests: z.boolean().default(false), revealAnswers: z.boolean().default(false), public: z.boolean().default(true) }) ); return await prisma.hunt.create({ data: { ...body, creatorId: user.user.id, members: { create: { memberId: user.user.id } } }, select: { id: true, name_de: true, name_en: true } }); });