"use server"

import { db } from "@/lib/db"
import { z } from "zod"
import { hash } from "bcryptjs"

const registerSchema = z.object({
  name: z.string().min(2, "Nom trop court"),
  email: z.string().email("Email invalide"),
  password: z.string().min(8, "8 caractères minimum"),
})

export type RegisterState = { error?: string; success?: boolean }

export async function registerUser(
  _prev: RegisterState,
  formData: FormData
): Promise<RegisterState> {
  const parsed = registerSchema.safeParse({
    name: formData.get("name"),
    email: formData.get("email"),
    password: formData.get("password"),
  })

  if (!parsed.success) {
    return { error: parsed.error.issues[0]?.message ?? "Données invalides" }
  }

  const { name, email, password } = parsed.data

  const existing = await db.user.findUnique({ where: { email } })
  if (existing) {
    return { error: "Un compte existe déjà avec cet email" }
  }

  const hashed = await hash(password, 12)
  await db.user.create({
    data: { name, email, password: hashed },
  })

  return { success: true }
}
