import { NextRequest, NextResponse } from 'next/server'
import { requireAdmin } from '@/lib/adminAuth'
import { prisma } from '@/lib/prisma'

export async function GET(req: NextRequest) {
  const auth = await requireAdmin()
  if ('error' in auth) return auth.error

  const { searchParams } = new URL(req.url)
  const page = Math.max(1, parseInt(searchParams.get('page') ?? '1'))
  const userId = searchParams.get('userId') ? parseInt(searchParams.get('userId')!) : undefined
  const pageSize = 30

  const where = userId ? { userId } : {}

  const [logs, total] = await Promise.all([
    prisma.sessionLog.findMany({
      where,
      orderBy: { loginAt: 'desc' },
      skip: (page - 1) * pageSize,
      take: pageSize,
      include: { user: { select: { name: true, email: true, role: true } } },
    }),
    prisma.sessionLog.count({ where }),
  ])

  const users = await prisma.user.findMany({
    orderBy: { name: 'asc' },
    select: { id: true, name: true },
  })

  return NextResponse.json({ logs, total, page, pageSize, users })
}
