import { NextRequest, NextResponse } from 'next/server'

const BACKEND_URL = process.env.BACKEND_URL || 'http://backend-lehrer:8001'

async function proxyRequest(
  request: NextRequest,
  { params }: { params: Promise<{ path: string[] }> }
): Promise<NextResponse> {
  const { path } = await params
  const pathStr = path.join('/')
  const searchParams = request.nextUrl.searchParams.toString()
  const url = `${BACKEND_URL}/api/user/${pathStr}${searchParams ? `?${searchParams}` : ''}`

  try {
    const fetchOptions: RequestInit = {
      method: request.method,
      headers: { 'Content-Type': 'application/json' },
    }
    if (request.method !== 'GET' && request.method !== 'HEAD') {
      fetchOptions.body = await request.text()
    }
    const resp = await fetch(url, fetchOptions)
    const data = await resp.text()
    return new NextResponse(data, {
      status: resp.status,
      headers: { 'Content-Type': resp.headers.get('Content-Type') || 'application/json' },
    })
  } catch (e) {
    return NextResponse.json({ error: String(e) }, { status: 502 })
  }
}

export const GET = proxyRequest
export const POST = proxyRequest
export const PUT = proxyRequest
