import { NextRequest, NextResponse } from 'next/server'
import { AdminApiError, requireAdminForApi } from '@/lib/admin-auth'
import { listShops } from '@/lib/admin-data'

export async function GET(request: NextRequest) {
  try {
    await requireAdminForApi()

    const { searchParams } = new URL(request.url)
    const data = await listShops({
      page: Number(searchParams.get('page') || '1'),
      pageSize: Number(searchParams.get('pageSize') || '20'),
      plan: searchParams.get('plan') || 'all',
      search: searchParams.get('search') || '',
    })

    return NextResponse.json(data)
  } catch (error) {
    if (error instanceof AdminApiError) {
      return NextResponse.json({ error: error.message }, { status: error.status })
    }

    console.error(error)
    return NextResponse.json({ error: 'Unexpected error' }, { status: 500 })
  }
}
