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

// GET /api/data/export — export sessions with messages
// Optional query param: ?workspace=<id> to filter by workspace (omit for all)
export async function GET(req: NextRequest) {
  const workspace = req.nextUrl.searchParams.get('workspace')

  const sessions = sessionRepo.listForExport(workspace || undefined)

  const exportData = sessions.map((s) => {
    const messages = messageRepo.listBySession(s.id)

    const exportMessages = messages.map((m) => {
      const role = m.role
      if (role === 'assistant') {
        let blocks: unknown[] = []
        try { blocks = JSON.parse(m.content) } catch { /* fallback */ }
        return { id: m.id, role, blocks, created_at: m.createdAt }
      }
      return { id: m.id, role, text: m.content, created_at: m.createdAt }
    })

    return { session: s, messages: exportMessages }
  })

  return NextResponse.json({
    exportedAt: new Date().toISOString(),
    version: '1.0',
    totalSessions: sessions.length,
    scope: workspace ? 'workspace' : 'all',
    data: exportData,
  })
}
