import { createError, readBody, setResponseStatus } from "h3"
import { requireAuthenticatedRequest } from "~/server/utils/auth"
import { prisma } from "~/server/utils/prisma"

interface ProfileBody {
  name?: string
}

export default defineEventHandler(async (event) => {
  if (event.method !== "POST") {
    setResponseStatus(event, 405)
    return {
      error: true,
      message: "Metodo no permitido"
    }
  }

  const user = await requireAuthenticatedRequest(event)
  const body = await readBody<ProfileBody>(event)
  const name = body.name?.trim() || null

  if (name && name.length > 80) {
    throw createError({
      statusCode: 400,
      statusMessage: "El nombre es demasiado largo"
    })
  }

  const updatedUser = await prisma.user.update({
    where: {
      id: user.id
    },
    data: {
      name
    },
    select: {
      id: true,
      email: true,
      name: true,
      imageUrl: true,
      role: true
    }
  })

  return {
    user: updatedUser
  }
})
