import { NextRequest, NextResponse } from "next/server";
import { readRunContext, deleteRunContext } from "@/lib/run-context";

function getContextIdentifier(request: NextRequest) {
  const partnerName = request.nextUrl.searchParams.get("partner_name") || "";
  const imei = request.nextUrl.searchParams.get("imei") || "";

  if (!partnerName || !imei) {
    return undefined;
  }

  return {
    partner_name: partnerName,
    imei,
  };
}

export async function GET(request: NextRequest) {
  try {
    const data = await readRunContext(getContextIdentifier(request));
    return NextResponse.json({ status: "success", code: 200, data });
  } catch {
    return NextResponse.json(
      {
        status: "error",
        code: 404,
        message: "Stored run context not found",
        data: {},
      },
      { status: 404 },
    );
  }
}

export async function DELETE(request: NextRequest) {
  const deleted = await deleteRunContext(getContextIdentifier(request));

  if (!deleted) {
    return NextResponse.json(
      {
        status: "error",
        code: 404,
        message: "Run context not found or already consumed",
        data: {},
      },
      { status: 404 },
    );
  }

  return NextResponse.json({
    status: "success",
    code: 200,
    message: "Run context invalidated or signed-token fallback accepted",
    data: {},
  });
}
