import { NextResponse } from 'next/server'
import { requireAdmin } from '@/lib/auth'
import { getGameDbConfig } from '@/lib/game-db'
import {
  getPredefinedDataSources,
  getAvailableTables,
  getTableColumns,
} from '@/lib/services/panel-builder-service'

export async function GET(request: Request) {
  try {
    const adminCheck = await requireAdmin()
    if (adminCheck) return adminCheck

    const { searchParams } = new URL(request.url)
    const table = searchParams.get('table')

    // If specific table requested, get columns
    if (table) {
      const columns = await getTableColumns(table)
      return NextResponse.json({ columns })
    }

    // Otherwise return all data sources
    const config = await getGameDbConfig()
    const framework = config?.framework || 'ESX'
    const predefinedSources = getPredefinedDataSources(framework)
    const availableTables = await getAvailableTables()

    return NextResponse.json({
      predefined: predefinedSources,
      tables: availableTables,
      framework,
    })
  } catch (error) {
    console.error('[API] Failed to fetch data sources:', error)
    return NextResponse.json({ error: 'Internal server error' }, { status: 500 })
  }
}
