import {createContact, getContacts} from '@/dal/contacts'
import {created, ok} from '@/lib/routeResponses'
import {protectedApiRoute} from '@/lib/apiRoute'
import {z} from 'zod'
import {createContactSchema} from '@/schemas/contactSchemas'

// 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 const GET = protectedApiRoute({
  routeFn: async ({data, profile}) => {
    const contacts = await getContacts(profile.id, data.name)
    return ok(contacts)
  },
  type: 'searchParams',
  schema: z.object({name: z.string().optional().default('')}),
})

export const POST = protectedApiRoute({
  routeFn: async ({data, profile}) => {
    const newContact = await createContact({...data, userId: profile.id})
    return created(newContact)
  },
  schema: createContactSchema,
})
