import { NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma'
import { safeHandler, requireAuth } from '@/lib/auth'

export const GET = safeHandler(async (req: Request) => {
  await requireAuth()
  const { searchParams } = new URL(req.url)
  const search = searchParams.get('search') || ''

  const destinations = await prisma.destination.findMany({
    where: search ? {
      OR: [
        { name: { contains: search, mode: 'insensitive' } },
        { country: { contains: search, mode: 'insensitive' } },
        { city: { contains: search, mode: 'insensitive' } },
      ],
    } : undefined,
    orderBy: { name: 'asc' },
  })

  return NextResponse.json(destinations)
})

export const POST = safeHandler(async (req: Request) => {
  await requireAuth(['ADMIN', 'OPERATIONS'])
  const data = await req.json()

  const destination = await prisma.destination.create({ data })
  return NextResponse.json(destination, { status: 201 })
})
