import { executeQuery } from "../lib/db";
import crypto from "crypto";
import jwt from "jsonwebtoken";

import { User } from "../models/user";

interface UserLogin {
	userName: string;
	password: string;
}

const getUser = async ({ userName, password }: UserLogin) => {
	const encryptedPassword = crypto.createHash("sha256").update(password).digest("hex");

	const query = `select * from users where userName='${userName}' and password='${encryptedPassword}'`;

	// console.log("Executing query:", query);

	const user: User[] = await executeQuery({
		query,
	});

	// console.log("User query result:", user);

	if (user.length === 0) {
		// no user found
		return {
			error: "Invalid username or password",
			status: 401,
			message: "Unauthorized",
		};
	} else {
		const token = jwt.sign({ userID: user[0].userID, role: "admin", level: 2 }, "secret-key");

		return {
			userID: user[0].userID,
			userName: user[0].userName,
			displayName: user[0].displayName,
			userType: user[0].userType,
			token,
		};
	}
};

export default {
	getUser,
};
