import { requireApiV1Auth } from "@/lib/api-v1/auth";
import { applyApiRateLimit } from "@/lib/api-v1/rate-limit";
import { apiJsonOk, toApiErrorResponse } from "@/lib/api-v1/response";
import { getExtensionConversationContext } from "@/lib/api-v1/services/extension/extension-service";
import { ensurePhoneDigits } from "@/lib/api-v1/validators";

export async function GET(request: Request) {
  try {
    const auth = await requireApiV1Auth(request, "clients.read");
    const { searchParams } = new URL(request.url);
    const phone = ensurePhoneDigits(searchParams.get("phone"), "invalid_phone", "Informe um telefone valido.");
    const rateLimit = applyApiRateLimit(
      request,
      {
        namespace: "api-v1:extension:conversation-context:get",
        windowMs: 60_000,
        maxPerIp: 90,
        maxPerUser: 120,
      },
      auth.user.id
    );

    const result = await getExtensionConversationContext({
      supabase: auth.supabase,
      user: auth.user,
      phone,
    });

    return apiJsonOk(result.data, { headers: rateLimit.headers });
  } catch (error) {
    return toApiErrorResponse(error);
  }
}
