import { getServerSession } from 'next-auth';
import { authOptions } from '@/lib/auth';
import { NextResponse } from 'next/server';
import Database from 'better-sqlite3';
import path from 'path';

function getDb() {
  return new Database(path.join(process.cwd(), '..', 'data', 'bot.db'));
}

export async function GET(_: Request, { params }: { params: Promise<{ guildId: string }> }) {
  const session = await getServerSession(authOptions);
  if (!session) return NextResponse.json({ error: 'Unauthorized' }, { status: 401 });

  const { guildId } = await params;
  const db = getDb();

  const stats = {
    active: (db.prepare("SELECT COUNT(*) as c FROM patrol_sessions WHERE guild_id = ? AND status = 'active'").get(guildId) as any).c,
    today: (db.prepare("SELECT COUNT(*) as c FROM patrol_sessions WHERE guild_id = ? AND date(joined_at) = date('now')").get(guildId) as any).c,
    totalMinutesToday: (db.prepare("SELECT COALESCE(SUM(duration_minutes), 0) as t FROM patrol_sessions WHERE guild_id = ? AND date(joined_at) = date('now') AND status = 'completed'").get(guildId) as any).t,
  };

  const leaderboard = db.prepare("SELECT user_id, SUM(duration_minutes) as total_minutes, COUNT(*) as sessions FROM patrol_sessions WHERE guild_id = ? AND status = 'completed' AND joined_at >= date('now', '-7 days') GROUP BY user_id ORDER BY total_minutes DESC LIMIT 15").all(guildId);
  const recent = db.prepare('SELECT * FROM patrol_sessions WHERE guild_id = ? ORDER BY joined_at DESC LIMIT 30').all(guildId);

  db.close();
  return NextResponse.json({ stats, leaderboard, recent });
}
