Files
online-energieausweis/src/pages/api/objekt/index.ts
2025-04-29 10:39:11 -03:00

61 lines
1.2 KiB
TypeScript

import { IDWithPrefix } from "#components/Ausweis/types.js";
import { generateIDWithPrefix } from "#lib/db.js";
import { authorizationMiddleware } from "#lib/middleware/authorization.js";
import { prisma } from "#lib/server/prisma.js";
import { defineApiRoute } from "astro-typesafe-api/server";
import { ObjektSchema } from "src/generated/zod/objekt.js";
import { z } from "zod";
export const PUT = defineApiRoute({
input: ObjektSchema.omit({
id: true,
benutzer_id: true,
erstellungsdatum: true
}),
output: z.object({
id: IDWithPrefix
}),
middleware: authorizationMiddleware,
async fetch(input, context, user) {
const id = generateIDWithPrefix(9, "OB")
console.log(id);
const objekt = await prisma.objekt.create({
data: {
id,
...input,
benutzer: {
connect: {
id: user.id
}
}
},
})
return {
id
}
},
})
export const GET = defineApiRoute({
input: z.object({
limit: z.number()
}),
output: z.array(ObjektSchema),
middleware: authorizationMiddleware,
async fetch(input, context, transfer) {
const objekte = await prisma.objekt.findMany({
take: input.limit,
where: {
benutzer: {
id: transfer.id
}
}
})
return objekte
},
})