78 lines
2.1 KiB
TypeScript
78 lines
2.1 KiB
TypeScript
import { Elysia, t } from "elysia";
|
|
import prisma from "../lib/prisma";
|
|
|
|
export const rawMaterialsRoute = new Elysia({ prefix: "/raw-materials" })
|
|
.get("/", async () => {
|
|
const rawMaterials = await prisma.rawMaterial.findMany({
|
|
orderBy: { name: "asc" },
|
|
});
|
|
return rawMaterials;
|
|
})
|
|
.get("/:id", async ({ params, status }) => {
|
|
const id = parseInt(params.id);
|
|
if (isNaN(id)) return status(400, { message: "Invalid ID" });
|
|
|
|
const rawMaterial = await prisma.rawMaterial.findUnique({
|
|
where: { id },
|
|
});
|
|
|
|
if (!rawMaterial) return status(404, { message: "Raw material not found" });
|
|
return rawMaterial;
|
|
})
|
|
.post("/", async ({ body, status }) => {
|
|
try {
|
|
const rawMaterial = await prisma.rawMaterial.create({
|
|
data: body,
|
|
});
|
|
return status(201, rawMaterial);
|
|
} catch (err) {
|
|
console.error(err);
|
|
return status(500, { message: "Failed to create raw material" });
|
|
}
|
|
}, {
|
|
body: t.Object({
|
|
name: t.String(),
|
|
unit: t.String(),
|
|
pricePerUnit: t.Number(),
|
|
}),
|
|
detail: { tags: ["raw-materials"] }
|
|
})
|
|
.put("/:id", async ({ params, body, status }) => {
|
|
const id = parseInt(params.id);
|
|
if (isNaN(id)) return status(400, { message: "Invalid ID" });
|
|
|
|
try {
|
|
const rawMaterial = await prisma.rawMaterial.update({
|
|
where: { id },
|
|
data: body,
|
|
});
|
|
return rawMaterial;
|
|
} catch (err) {
|
|
console.error(err);
|
|
return status(500, { message: "Failed to update raw material" });
|
|
}
|
|
}, {
|
|
body: t.Object({
|
|
name: t.String(),
|
|
unit: t.String(),
|
|
pricePerUnit: t.Number(),
|
|
}),
|
|
detail: { tags: ["raw-materials"] }
|
|
})
|
|
.delete("/:id", async ({ params, status }) => {
|
|
const id = parseInt(params.id);
|
|
if (isNaN(id)) return status(400, { message: "Invalid ID" });
|
|
|
|
try {
|
|
await prisma.rawMaterial.delete({
|
|
where: { id },
|
|
});
|
|
return { success: true };
|
|
} catch (err) {
|
|
console.error(err);
|
|
return status(500, { message: "Failed to delete raw material" });
|
|
}
|
|
}, {
|
|
detail: { tags: ["raw-materials"] }
|
|
});
|