import {compare} from 'bcrypt';
import {generateSession} from "~/server/utils/generateSession";
import prisma from "~/lib/prisma";
import {EventHandlerRequest, H3Event} from "h3";

export default defineEventHandler(async (event: H3Event<EventHandlerRequest>) => {
    const userExists = await prisma.user.count();
    if (!userExists) {
        throw createError({statusCode: 403, statusMessage: 'No users exist'});
    }

    const {email, password} = await readBody(event);

    const user = await prisma.user.findUnique({
        where: {email},
    });

    if (!user || !(await compare(password, user.password))) {
        throw createError({statusCode: 401, statusMessage: 'Invalid credentials'});
    }

    await generateSession(user, event);

    return {
        id: user.id,
        email: user.email,
        name: user.name,
    };
});