"use server";
import { prisma, Prisma } from "@repo/db";
import { getServerSession } from "../../api/auth/[...nextauth]/auth";
import bcrypt from "bcryptjs";

export const unlinkDiscord = async (userId: string) => {
	await prisma.discordAccount.deleteMany({
		where: {
			userId,
		},
	});
};

export const updateUser = async (changes: Prisma.UserUpdateInput) => {
	const session = await getServerSession();
	if (!session) return null;

	await prisma.user.update({
		where: {
			id: session.user.id,
		},
		data: changes,
	});
};

export const changePassword = async (oldPassword: string, newPassword: string) => {
	const session = await getServerSession();
	if (!session)
		return {
			error: "User not found",
		};

	if (!(await bcrypt.compare(oldPassword, session.user.password)))
		return {
			error: "Old password is incorrect",
		};

	const hashedPassword = await bcrypt.hash(newPassword, 12);
	await prisma.user.update({
		data: {
			password: hashedPassword,
		},
		where: {
			id: session.user.id,
		},
	});
	return {
		success: true,
	};
};
