import { NextResponse } from "next/server"; import { isConvexEnabled } from "@/lib/convex/enabled"; import { getAuthedConvexClient } from "@/lib/convex/route"; import { api } from "@/lib/convex/api"; import { buildMindmapRouteMeta } from "@/lib/mindmap/mindmapRouteMeta"; const defaultMindmapData = { data: { text: "中心主题" }, children: [], }; export async function GET( request: Request, { params }: { params: Promise<{ docId: string }> }, ) { const { docId } = await params; if (isConvexEnabled()) { const { auth, client } = await getAuthedConvexClient(); const mindmapId = `legacy-${docId}`; const res = await client.query(api.mindmaps.get, { docId, mindmapId }); return NextResponse.json({ data: res?.data ?? defaultMindmapData, source: "convex", meta: { ...buildMindmapRouteMeta(request, { workspaceId: res?.meta?.workspace_id ?? null, documentId: docId, mindmapId, ownerUserId: auth.userId, }), exists: Boolean(res?.meta?.exists), deletedAt: res?.meta?.deleted_at ?? null, createdAt: res?.meta?.created_at ?? null, updatedAt: res?.meta?.updated_at ?? null, }, }); } return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 }); } export async function POST( request: Request, { params }: { params: Promise<{ docId: string }> }, ) { const { docId } = await params; if (isConvexEnabled()) { const { auth, client } = await getAuthedConvexClient(); const mindmapId = `legacy-${docId}`; const payload = (await request.json().catch(() => ({}))) as { data?: unknown }; const result = await client.mutation(api.mindmaps.put, { docId, mindmapId, data: payload.data ?? defaultMindmapData, }); return NextResponse.json({ ...(result ?? { ok: true }), meta: { ...buildMindmapRouteMeta(request, { workspaceId: result?.workspace_id ?? null, documentId: docId, mindmapId, ownerUserId: auth.userId, }), updatedAt: result?.updated_at ?? null, }, }); } return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 }); } export async function DELETE( request: Request, { params }: { params: Promise<{ docId: string }> }, ) { const { docId } = await params; if (isConvexEnabled()) { const { auth, client } = await getAuthedConvexClient(); const mindmapId = `legacy-${docId}`; const result = await client.mutation(api.mindmaps.softDelete, { docId, mindmapId }); return NextResponse.json({ ...(result ?? { ok: true }), meta: { ...buildMindmapRouteMeta(request, { workspaceId: result?.workspace_id ?? null, documentId: docId, mindmapId, ownerUserId: auth.userId, }), deletedAt: result?.deleted_at ?? null, }, }); } return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 }); }