import { NextRequest, NextResponse } from "next/server" import bcrypt from "bcryptjs" import dbConnect from "@/lib/mongodb" import User from "@/model/User" import { registerSchema, formatZodError } from "@/lib/validation" export async function POST(request: NextRequest) { try { const body = await request.json() const result = registerSchema.safeParse(body) if (!result.success) { const errors = formatZodError(result.error) return NextResponse.json( { error: "Validation failed", details: errors }, { status: 400 } ) } const { name, email, password } = result.data await dbConnect() const existingUser = await User.findOne({ email }) if (existingUser) { return NextResponse.json( { error: "User already exists" }, { status: 409 } ) } const hashedPassword = await bcrypt.hash(password, 12) const user = await User.create({ name, email, password: hashedPassword, }) return NextResponse.json( { message: "User created successfully", userId: user._id }, { status: 201 } ) } catch (error) { console.error("Registration error:", error) if (error && typeof error === 'object' && 'code' in error && error.code === 11000) { return NextResponse.json( { error: "User already exists" }, { status: 409 } ) } return NextResponse.json( { error: "Internal server error" }, { status: 500 } ) } }