import prisma from "@/lib/prisma";

async function safeCount(query: string): Promise<number> {
  try {
    const rows: { count: number }[] = await prisma.$queryRawUnsafe(query);
    return rows[0]?.count ?? 0;
  } catch {
    return 0;
  }
}

export default async function QuickStatsWidget() {
  const [totalUsers, onlineNow, pendingModeration, openTickets] = await Promise.all([
    safeCount(`SELECT COUNT(*)::int as count FROM users`),
    safeCount(`SELECT COUNT(*)::int as count FROM users WHERE lastonline_at >= NOW() - interval '15 minutes'`),
    safeCount(`SELECT COUNT(*)::int as count FROM photos WHERE moderation_status = 'pending'`),
    safeCount(`SELECT COUNT(*)::int as count FROM tickets WHERE status = 'open'`),
  ]);

  const stats = [
    { label: "Total Users", value: totalUsers.toLocaleString(), color: "text-blue-400" },
    { label: "Online Now", value: onlineNow.toLocaleString(), color: "text-green-400" },
    { label: "Pending Moderation", value: pendingModeration.toLocaleString(), color: "text-amber-400" },
    { label: "Open Tickets", value: openTickets.toLocaleString(), color: "text-red-400" },
  ];

  return (
    <div className="bg-[#0a0a1a]/80 border-b border-surface-light px-4 py-2">
      <div className="flex items-center justify-between gap-4 overflow-x-auto">
        {stats.map((stat) => (
          <div key={stat.label} className="flex items-center gap-2 shrink-0">
            <span className="text-text-muted text-xs">{stat.label}:</span>
            <span className={`text-sm font-semibold ${stat.color}`}>{stat.value}</span>
          </div>
        ))}
      </div>
    </div>
  );
}
