import type { RequestHandler } from './$types';
import { json, error } from '@sveltejs/kit';
import bcrypt from 'bcrypt';
import jwt from 'jsonwebtoken';
import pool from '$lib/server/database';

const SECRET = process.env.JWT_SECRET || 'changeme';

export const POST: RequestHandler = async ({ request }) => {
	const { login_id, password } = await request.json();

	if (!login_id || !password) {
		throw error(400, '아이디와 비밀번호를 입력해주세요.');
	}

	// ✅ PostgreSQL에서 사용자 조회
	const { rows } = await pool.query(
		'SELECT * FROM "Worker" WHERE login_id = $1',
		[login_id]
	);
	const worker = rows[0];
	if (!worker) throw error(401, '존재하지 않는 아이디입니다.');

	// ✅ 비밀번호 검증
	const valid = await bcrypt.compare(password, worker.password_hash);
	if (!valid) throw error(401, '비밀번호가 올바르지 않습니다.');

	// ✅ JWT 발급
	const token = jwt.sign(
		{
			id: worker.workerid,
			name: worker.workername,
			login_id: worker.login_id
		},
		SECRET,
		{ expiresIn: '8h' }
	);

	return json({
		token,
		worker: {
			id: worker.workerid,
			name: worker.workername,
			login_id: worker.login_id
		}
	});
};
