import { weirdToNormalChars as w2nc } from "weird-to-normal-chars";
import crypto from "crypto";
import { usernameRegex } from "@server/constants";
import { User } from "@models/user";
import mongoose from "mongoose";
import captcha from "@server/middlewareButNotReally/captcha";

export default eventHandler(async (event) => {
	const body = await readBody(event);
	console.log(typeof body);
	console.log(body);
	if (!body.username || !body.password || !body.email) {
		throw createError({ statusCode: 400 });
	}
	await captcha(event);
	console.log("fields exist");
	const user = await User.findOne({
		$or: [
			{ username: usernameRegex(body.username) },
			{ email: (body.email as string).toLowerCase() },
		],
	});
	console.log("after f0", user);
	if (user)
		throw createError({
			statusCode: 400,
			message: "A user with that username or email already exists.",
		});
	let nuser = new User({
		email: body.email.toLowerCase(),
		username: w2nc(body.username.trim()),
		password: User.generateHash(body.password),
		auth: {
			activationKey: crypto.randomBytes(256).toString("hex"),
			emailVerified: false,
		},
	});
	console.log("nu", nuser);
	console.log("nnibg", mongoose.connections);
	await nuser.save();
	console.log("savey", await nuser.save());
	return {
		success: true,
	};
});