export const dynamic = 'force-dynamic'

export async function GET() {
  const encoder = new TextEncoder()

  const stream = new ReadableStream({
    async start(controller) {
      const send = (data: object) => {
        controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`))
      }

      // Poll FastAPI stats every 3s and push to browser
      while (true) {
        try {
          const res = await fetch('http://localhost:8000/api/stats', {
            signal: AbortSignal.timeout(2000),
          })
          if (res.ok) {
            const stats = await res.json()
            send({ type: 'stats', payload: stats })
          }
        } catch {
          send({ type: 'offline' })
        }
        await new Promise((r) => setTimeout(r, 3000))
      }
    },
  })

  return new Response(stream, {
    headers: {
      'Content-Type': 'text/event-stream',
      'Cache-Control': 'no-cache',
      Connection: 'keep-alive',
    },
  })
}
