import { NextResponse } from "next/server"; import { auth } from "@/app/(auth)/auth"; import { createWorkspaceDocument, createWorkspaceSummary, normalizeWorkspacePayload, type UpdateAiCadWorkspaceRequest, } from "@/app/api/ai-cad/workspace-utils"; import { deleteAiCadWorkspaceById, getAiCadWorkspaceById, updateAiCadWorkspace, } from "@/lib/db/queries"; export const runtime = "nodejs"; type RouteContext = { params: Promise<{ workspaceId: string; }>; }; export async function GET(_request: Request, context: RouteContext) { const session = await auth(); if (!session?.user?.id) { return NextResponse.json( { success: false, error: "未登录" }, { status: 401 } ); } const { workspaceId } = await context.params; const workspace = await getAiCadWorkspaceById({ userId: session.user.id, workspaceId, }); if (!workspace) { return NextResponse.json( { success: false, error: "AI-CAD 工作台不存在" }, { status: 404 } ); } return NextResponse.json({ success: true, data: createWorkspaceDocument(workspace), }); } export async function PUT(request: Request, context: RouteContext) { const session = await auth(); if (!session?.user?.id) { return NextResponse.json( { success: false, error: "未登录" }, { status: 401 } ); } const { workspaceId } = await context.params; const body = (await request.json()) as UpdateAiCadWorkspaceRequest; const savedWorkspace = await updateAiCadWorkspace({ workspaceId, userId: session.user.id, ...normalizeWorkspacePayload(body), }); if (!savedWorkspace) { return NextResponse.json( { success: false, error: "AI-CAD 工作台不存在或保存失败" }, { status: 404 } ); } return NextResponse.json({ success: true, data: { id: savedWorkspace.id, name: savedWorkspace.name, updatedAt: savedWorkspace.updatedAt?.toISOString() || null, summary: createWorkspaceSummary(savedWorkspace), }, }); } export async function DELETE(_request: Request, context: RouteContext) { const session = await auth(); if (!session?.user?.id) { return NextResponse.json( { success: false, error: "未登录" }, { status: 401 } ); } const { workspaceId } = await context.params; const deletedWorkspace = await deleteAiCadWorkspaceById({ workspaceId, userId: session.user.id, }); if (!deletedWorkspace) { return NextResponse.json( { success: false, error: "AI-CAD 工作台不存在" }, { status: 404 } ); } return NextResponse.json({ success: true, data: { id: deletedWorkspace.id, }, }); }