import { NextResponse } from 'next/server'
import { sessionRepo } from '@/lib/database/repositories/session.repo'
import { messageRepo } from '@/lib/database/repositories/message.repo'
import { isAuthError, requireUser, requireWorkspaceReadAccess } from '@/lib/auth/session'

// GET /api/sessions/:id/messages
export async function GET(_req: Request, { params }: { params: Promise<{ id: string }> }) {
  let user
  try { user = await requireUser() } catch (err) { if (isAuthError(err)) return err; throw err }
  const { id } = await params
  const session = sessionRepo.findByIdAndUser(id, user.id)
  if (!session) return NextResponse.json({ error: 'Session not found' }, { status: 404 })
  if (session.workspace) {
    try { await requireWorkspaceReadAccess(session.workspace) } catch (err) { if (isAuthError(err)) return err; throw err }
  }
  const messages = messageRepo.listBySession(id)
  return NextResponse.json(messages)
}
