import type { NextApiRequest, NextApiResponse } from "next";
import { env } from "~/env";

/**
 * /api/revalidation
 * Endpoint per la revalidazione delle pagine. Richiede un token segreto e il percorso della pagina da revalidare.
 * Utilizzato per forzare Next.js a rigenerare una pagina statica quando i dati sottostanti cambiano, ad esempio dopo un aggiornamento del database.
 */
export default async function handler(
	req: NextApiRequest,
	res: NextApiResponse,
) {
	if (req.query.secret !== env.REVALIDATION_SECRET) {
		return res.status(401).json({ message: "Invalid token" });
	}
	const path = decodeURIComponent(req.query.path as string);

	if (!path) {
		return res.status(400).json({ message: "Missing path parameter" });
	}

	try {
		await res.revalidate(`${path}`);

		return res.json({
			success: true,
			message: `Page ${path} revalidated successfully`,
		});
	} catch (err) {
		console.error("Error revalidating:", err);
		return res.status(500).json({
			success: false,
			message: err instanceof Error ? err.message : "Unknown error",
		});
	}
}
