import { NextResponse } from "next/server"
import { requireAuth } from "@/lib/shared/middleware/auth.middleware"
import { withErrorHandling } from "@/lib/shared/middleware/errorHandler.middleware"
import { createUserFromRequest, listUsers } from "@/lib/controllers/userController"

export const runtime = "nodejs"

export const GET = withErrorHandling(async () => {
  const unauthorized = await requireAuth()
  if (unauthorized) return unauthorized

  const users = await listUsers()
  return NextResponse.json(users)
})

export const POST = withErrorHandling(async (req: Request) => {
  const unauthorized = await requireAuth()
  if (unauthorized) return unauthorized

  const user = await createUserFromRequest(req)
  return NextResponse.json(user, { status: 201 })
})
