import type { NextApiRequest, NextApiResponse } from "next";

/**
 * Config del límite de consultas de la lista de precios.
 *
 * Se lee en runtime a propósito. Si usáramos NEXT_PUBLIC_*, Next incrusta el
 * valor en el bundle al compilar y cambiar el límite obligaría a rebuildear y
 * redeployar. Así alcanza con editar el .env y reiniciar pm2.
 */

const DEFAULT_MAX_QUERIES = 3;
const DEFAULT_WINDOW_HOURS = 24;

const toPositiveInt = (raw: string | undefined, fallback: number): number => {
  const n = Number(raw);
  return Number.isFinite(n) && n > 0 ? Math.floor(n) : fallback;
};

// La ventana admite decimales para poder probarla sin esperar un dia entero:
// 0.02 son ~72 segundos, 0.5 media hora, 24 un dia, 168 una semana.
const toPositiveFloat = (raw: string | undefined, fallback: number): number => {
  const n = Number(raw);
  return Number.isFinite(n) && n > 0 ? n : fallback;
};

export default function handler(_req: NextApiRequest, res: NextApiResponse) {
  // Sin cache: si no, el CDN/navegador sirve el límite viejo despues de cambiarlo.
  res.setHeader("Cache-Control", "no-store");

  res.status(200).json({
    maxQueries: toPositiveInt(process.env.PRICE_LIST_MAX_QUERIES, DEFAULT_MAX_QUERIES),
    windowHours: toPositiveFloat(process.env.PRICE_LIST_WINDOW_HOURS, DEFAULT_WINDOW_HOURS),
  });
}
