import type {NextRequest, NextResponse} from 'next/server'
import type {CreateContactParams} from '@/dal/contacts'
import {createContact, getContacts} from '@/dal/contacts'
import {created, ok} from '@/lib/routeResponses'

// Een route.ts bestand kan per HTTP endpoint exact één functie exporteren.
// Deze functie zijn asynchroon, krijgen een NextRequest object als argument en geven een NextResponse terug.

export async function GET(request: NextRequest): Promise<NextResponse> {
  // Lees de query parameters uit, i.e. dingen die na het vraagteken in de URL staan.
  // Vb: /api/contacts?name=John
  // Daar is name een query parameter.
  const contactName = request.nextUrl.searchParams.get('name') ?? ''
  const contacts = await getContacts(contactName)
  return ok(contacts)
}

export async function POST(request: NextRequest): Promise<NextResponse> {
  // Lees de body van het request uit als een JSON-object.
  const data = (await request.json()) as CreateContactParams
  const newContact = await createContact(data)
  return created(newContact)
}
