SPB Git forge

spb/polyllm

Public
15commits 1branches 0releases
2.2 MBsize
maindefault branch
13 days agolast push
TypeScript 97.4% SQL 1% JavaScript 0.9% CSS 0.6%
1.1 KB · 25 lines typescript
Raw Blame History
1import { z } from "zod";2import { withUser, parseBody, json } from "@/lib/api";3import { listFolders, createFolder, updateFolder, deleteFolder } from "@/lib/conversations/service";45export const dynamic = "force-dynamic";67export const GET = withUser(async ({ user }) => json({ folders: await listFolders(user.id) }));89export const POST = withUser(async ({ req, user }) => {10  const body = await parseBody(req, z.object({ name: z.string().min(1).max(80), color: z.string().max(20).nullable().optional() }));11  return json({ folder: await createFolder(user.id, body.name, body.color) }, { status: 201 });12});1314export const PATCH = withUser(async ({ req, user }) => {15  const body = await parseBody(req, z.object({ id: z.string().max(64), name: z.string().min(1).max(80).optional(), color: z.string().max(20).nullable().optional(), sortOrder: z.number().int().optional() }));16  const { id, ...patch } = body;17  return json({ folder: await updateFolder(user.id, id, patch) });18});1920export const DELETE = withUser(async ({ req, user }) => {21  const id = new URL(req.url).searchParams.get("id");22  if (id) await deleteFolder(user.id, id);23  return json({ ok: true });24});25