import { NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' import { auth } from '@/lib/auth' import { headers } from 'next/headers' export async function GET() { try { const session = await auth.api.getSession({ headers: await headers() }) if (!session?.user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }) } // Check if user is admin const user = await prisma.user.findUnique({ where: { id: session.user.id }, select: { isAdmin: true } }) if (!user?.isAdmin) { return NextResponse.json({ error: 'Forbidden' }, { status: 403 }) } // Get simulator runs that are public (including pending and published ones for review) const simulatorRuns = await prisma.simulatorRun.findMany({ where: { permissions: 'public', OR: [ { visibility: null }, { visibility: 'under_review' }, { visibility: 'published' } ] }, include: { user: { select: { username: true, email: true } }, prompt: { select: { name: true, content: true } }, model: { select: { name: true, provider: true, outputType: true } } }, orderBy: { createdAt: 'desc' } }) return NextResponse.json({ simulatorRuns }) } catch (error) { console.error('Error fetching pending simulator runs:', error) return NextResponse.json( { error: 'Failed to fetch simulator runs' }, { status: 500 } ) } }