import { db } from '@/lib/db' import { hash } from 'bcrypt' import { NextResponse } from 'next/server' export async function POST(req: Request) { try { const { username, email, password } = await req.json() const hashed = await hash(password, 12) let usernameCheck = username.toLowerCase() const emailCheck = email.toLowerCase() const existingUser = await db.user.findUnique({ where: { email: emailCheck } }) if (existingUser) { throw new Error('email already exists') } let isUnique = false; while (!isUnique) { const existingUserName = await db.user.findUnique({ where: { username: usernameCheck } }) if (existingUserName) { usernameCheck = `${username}${Math.floor(Math.random() * 1000)}` } else { isUnique = true; } } const user = await db.user.create({ data: { name: username, username: usernameCheck, email: emailCheck, password: hashed } }) return NextResponse.json({ usernameOrEmail: user.email }) } catch (err: any) { if (err.message === 'email already exists') { return new NextResponse(JSON.stringify({ error: err.message }), { status: 422 } ) } return new NextResponse( JSON.stringify({ error: err.message }), { status: 500 } ) } }