import { NextResponse } from "next/server";
import { prisma } from "@/lib/prisma";
import { compactAttribution } from "@/lib/attribution";

export async function POST(request: Request) {
  try {
    const body = await request.json();
    const attribution = compactAttribution(body?.attribution);

    if (!body?.eventType) {
      return NextResponse.json({ error: "eventType is required" }, { status: 400 });
    }

    await prisma.trafficEvent.create({
      data: {
        eventType: String(body.eventType),
        sessionId: body.sessionId ? String(body.sessionId) : undefined,
        clickId: attribution?.click_id?.toString(),
        slug: attribution?.slug?.toString(),
        variant: attribution?.variant?.toString(),
        path: body.path ? String(body.path) : attribution?.landing_path?.toString(),
        source: attribution?.src?.toString(),
        campaign: attribution?.campaign?.toString(),
        creative: attribution?.creative?.toString(),
        adType: attribution?.ad_type?.toString(),
        eventData: JSON.stringify({
          attribution,
          data: body?.data || {},
        }),
      },
    });

    return NextResponse.json({ ok: true });
  } catch (error) {
    console.error("Traffic track error:", error);
    return NextResponse.json({ error: "Failed to record traffic event" }, { status: 500 });
  }
}
