import { query, execute, queryOne } from '../../../utils/db' /** * 개선의견 공감 토글 * POST /api/feedback/[id]/like */ export default defineEventHandler(async (event) => { const userId = getCookie(event, 'user_id') if (!userId) { throw createError({ statusCode: 401, message: '로그인이 필요합니다.' }) } const feedbackId = getRouterParam(event, 'id') if (!feedbackId) { throw createError({ statusCode: 400, message: '피드백 ID가 필요합니다.' }) } // 피드백 존재 확인 const feedback = await query(` SELECT feedback_id FROM wr_feedback WHERE feedback_id = $1 `, [feedbackId]) if (!feedback[0]) { throw createError({ statusCode: 404, message: '의견을 찾을 수 없습니다.' }) } // 이미 공감했는지 확인 const existing = await query(` SELECT 1 FROM wr_feedback_like WHERE feedback_id = $1 AND employee_id = $2 `, [feedbackId, userId]) let isLiked: boolean let likeCount: number if (existing[0]) { // 공감 취소 await execute(` DELETE FROM wr_feedback_like WHERE feedback_id = $1 AND employee_id = $2 `, [feedbackId, userId]) await execute(` UPDATE wr_feedback SET like_count = like_count - 1 WHERE feedback_id = $1 `, [feedbackId]) isLiked = false } else { // 공감 추가 await execute(` INSERT INTO wr_feedback_like (feedback_id, employee_id) VALUES ($1, $2) `, [feedbackId, userId]) await execute(` UPDATE wr_feedback SET like_count = like_count + 1 WHERE feedback_id = $1 `, [feedbackId]) isLiked = true } // 최신 카운트 조회 const updated = await queryOne(` SELECT like_count FROM wr_feedback WHERE feedback_id = $1 `, [feedbackId]) likeCount = updated.like_count return { success: true, isLiked, likeCount } })