import { UUidWithPrefix } from "#components/Ausweis/types.js" import { authorizationMiddleware } from "#lib/middleware/authorization.js" import { AufnahmeSchema, ObjektSchema, prisma } from "#lib/server/prisma.js" import { APIError, defineApiRoute } from "astro-typesafe-api/server" import { z } from "zod" export const PUT = defineApiRoute({ input: z.object({ aufnahme: AufnahmeSchema.omit({ id: true, uid: true, benutzer_id: true, objekt_id: true, }).merge(z.object({ baujahr_klima: z.array(z.number().int().positive()).optional() })), uid_objekt: UUidWithPrefix }), output: z.object({ uid: UUidWithPrefix }), middleware: authorizationMiddleware, async fetch(input, context, user) { const objekt = await prisma.objekt.findUnique({ where: { uid: input.uid_objekt, benutzer: { id: user.id } } }) if (!objekt) { throw new APIError({ code: "NOT_FOUND", message: "Objekt konnte nicht gefunden werden oder gehört nicht diesem Benutzer." }) } const aufnahme = await prisma.aufnahme.create({ data: { ...input.aufnahme, benutzer: { connect: { id: user.id } }, objekt: { connect: { uid: input.uid_objekt } } }, }) return { uid: aufnahme.uid } }, })