API größtenteils umgezogen und Funktionen angepasst

This commit is contained in:
Moritz Utcke
2025-01-21 23:34:01 +07:00
parent de8c859826
commit 5d73f5f7c7
74 changed files with 1715 additions and 818 deletions

View File

@@ -0,0 +1,59 @@
import { authorizationMiddleware } from "#lib/middleware/authorization.js"
import { AufnahmeSchema, ObjektSchema, prisma } from "@ibcornelsen/database/server"
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: z.string().uuid()
}),
output: z.object({
uid: z.string().uuid()
}),
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
}
},
})