API größtenteils umgezogen und Funktionen angepasst
This commit is contained in:
@@ -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
|
||||
}
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user