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

export async function GET(req: Request) {
  const { searchParams } = new URL(req.url);
  const period = searchParams.get("period") || "monthly"; // daily/weekly/monthly/all
  let since: Date | undefined;
  const now = new Date();
  if (period === "daily") since = new Date(now.getFullYear(), now.getMonth(), now.getDate());
  else if (period === "weekly") since = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 7);
  else if (period === "monthly") since = new Date(now.getFullYear(), now.getMonth(), 1);

  const where = since ? { createdAt: { gte: since } } : {};
  const agg = await prisma.pointTransaction.groupBy({
    by: ["userId"],
    where,
    _sum: { amount: true },
    orderBy: { _sum: { amount: "desc" } },
    take: 50,
  });
  const userIds = agg.map((a) => a.userId);
  const users = await prisma.user.findMany({ where: { userId: { in: userIds } }, select: { userId: true, nickname: true } });
  const items = agg.map((a) => ({ userId: a.userId, points: a._sum.amount ?? 0, nickname: users.find((u) => u.userId === a.userId)?.nickname || "" }));
  return NextResponse.json({ period, items });
}


