import { NextRequest, NextResponse } from "next/server";
import { connectDB } from "@/lib/db";
import { PageView } from "@/models/PageView";

// Öffentlicher, anonymer Seitenaufruf-Zähler fürs Statistiken-Dashboard —
// per sendBeacon aus components/PageViewTracker.tsx angestoßen. Admin-/
// Konto-Seiten werden serverseitig ausgeschlossen (nicht nur clientseitig),
// das ist hier die eigentliche Absicherung.
export async function POST(req: NextRequest) {
  try {
    const body = await req.json();
    const rawPath = typeof body?.path === "string" ? body.path : "";
    if (!/^\/(de|en)(\/.*)?$/.test(rawPath)) {
      return NextResponse.json({ ok: false }, { status: 400 });
    }
    if (/^\/(de|en)\/(admin|account)(\/|$)/.test(rawPath)) {
      return NextResponse.json({ ok: true });
    }

    const locale = body?.locale === "en" ? "en" : "de";
    const referrer = typeof body?.referrer === "string" ? body.referrer.slice(0, 300) : "";

    await connectDB();
    await PageView.create({ path: rawPath.slice(0, 300), locale, referrer });
    return NextResponse.json({ ok: true });
  } catch {
    return NextResponse.json({ ok: false }, { status: 500 });
  }
}
