Files
mnote/wolai-frontend/src/app/api/documents/restore/route.ts
T

60 lines
1.8 KiB
TypeScript
Raw Normal View History

2025-11-23 10:55:04 +08:00
import { NextResponse } from "next/server";
2026-01-17 10:12:53 +08:00
import { isConvexEnabled } from "@/lib/convex/enabled";
2026-04-15 20:01:12 +08:00
import {
assertDocumentId,
buildDocumentBridgeContext,
buildDocumentCommandEnvelope,
documentBridgeErrorResponse,
} from "@/lib/documents/bridge";
import {
executePageLifecycleBridgeCommand,
type DocumentRestorePayload,
} from "@/lib/documents/page-command-adapter";
2025-11-23 10:55:04 +08:00
export const dynamic = "force-dynamic";
export async function POST(request: Request) {
2026-01-17 10:12:53 +08:00
if (isConvexEnabled()) {
2026-04-15 20:01:12 +08:00
try {
const body = (await request.json()) as { documentId?: string; workspaceId?: string | null };
const normalizedDocumentId = assertDocumentId(body.documentId);
const normalizedWorkspaceId = body.workspaceId?.trim() || null;
const bridgeContext = await buildDocumentBridgeContext({
request,
workspaceId: normalizedWorkspaceId,
});
const result = await executePageLifecycleBridgeCommand<DocumentRestorePayload, { ok: boolean }>({
context: bridgeContext,
envelope: buildDocumentCommandEnvelope({
name: "documents.restore",
payload: {
documentId: normalizedDocumentId,
workspaceId: normalizedWorkspaceId,
},
context: bridgeContext,
target: {
workspaceId: normalizedWorkspaceId,
pageId: normalizedDocumentId,
},
}),
});
return NextResponse.json({
success: true,
meta: {
requestId: result.requestId,
traceId: result.traceId,
commandId: result.commandId,
commandName: result.commandName,
},
});
} catch (error) {
return documentBridgeErrorResponse(error);
2026-01-17 10:12:53 +08:00
}
}
2026-01-18 19:01:31 +08:00
return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 });
2025-11-23 10:55:04 +08:00
}
2026-04-15 20:01:12 +08:00
export const runtime = "nodejs";