import { NextResponse } from "next/server";
import { isConvexEnabled } from "@/lib/convex/enabled";
import {
  assertDocumentId,
  buildDocumentBridgeContext,
  buildDocumentCommandEnvelope,
  documentBridgeErrorResponse,
} from "@/lib/documents/bridge";
import {
  executePageLifecycleBridgeCommand,
  type DocumentDeletePayload,
} from "@/lib/documents/page-command-adapter";

export const dynamic = "force-dynamic";

export async function POST(request: Request) {
  if (isConvexEnabled()) {
    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<DocumentDeletePayload, { ok: boolean }>({
        context: bridgeContext,
        envelope: buildDocumentCommandEnvelope({
          name: "documents.delete",
          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);
    }
  }

  return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 });
}

export const runtime = "nodejs";
