import { NextResponse } from "next/server"
import { requireAuth } from "@/lib/shared/middleware/auth.middleware"
import { withErrorHandling } from "@/lib/shared/middleware/errorHandler.middleware"
import { createRoleFromRequest, listRoles } from "@/lib/controllers/roleController"

export const runtime = "nodejs"

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

  const roles = await listRoles()
  return NextResponse.json(roles)
})

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

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