Spaces:
Runtime error
Runtime error
| import { Router } from "express"; | |
| import { db, briefsTable } from "@workspace/db"; | |
| import { eq, and } from "drizzle-orm"; | |
| import { | |
| CreateBriefBody, | |
| UpdateBriefBody, | |
| UpdateBriefParams, | |
| DeleteBriefParams, | |
| } from "@workspace/api-zod"; | |
| const router = Router(); | |
| router.get("/briefs", async (req, res) => { | |
| const briefs = await db.select().from(briefsTable).where(eq(briefsTable.userId, req.user!.id)).orderBy(briefsTable.createdAt); | |
| res.json(briefs); | |
| }); | |
| router.post("/briefs", async (req, res) => { | |
| const body = CreateBriefBody.safeParse(req.body); | |
| if (!body.success) { | |
| res.status(400).json({ error: body.error.message }); | |
| return; | |
| } | |
| const [brief] = await db.insert(briefsTable).values({ ...body.data, userId: req.user!.id }).returning(); | |
| res.status(201).json(brief); | |
| }); | |
| router.patch("/briefs/:id", async (req, res) => { | |
| const params = UpdateBriefParams.safeParse({ id: Number(req.params.id) }); | |
| if (!params.success) { | |
| res.status(400).json({ error: params.error.message }); | |
| return; | |
| } | |
| const body = UpdateBriefBody.safeParse(req.body); | |
| if (!body.success) { | |
| res.status(400).json({ error: body.error.message }); | |
| return; | |
| } | |
| const [brief] = await db | |
| .update(briefsTable) | |
| .set(body.data) | |
| .where(and(eq(briefsTable.id, params.data.id), eq(briefsTable.userId, req.user!.id))) | |
| .returning(); | |
| if (!brief) { | |
| res.status(404).json({ error: "Brief not found" }); | |
| return; | |
| } | |
| res.json(brief); | |
| }); | |
| router.delete("/briefs/:id", async (req, res) => { | |
| const params = DeleteBriefParams.safeParse({ id: Number(req.params.id) }); | |
| if (!params.success) { | |
| res.status(400).json({ error: params.error.message }); | |
| return; | |
| } | |
| await db.delete(briefsTable).where(and(eq(briefsTable.id, params.data.id), eq(briefsTable.userId, req.user!.id))); | |
| res.status(204).send(); | |
| }); | |
| export default router; | |