import { query } from '../../utils/db' /** * 개선의견 목록 조회 * GET /api/feedback/list */ export default defineEventHandler(async (event) => { const userId = getCookie(event, 'user_id') if (!userId) { throw createError({ statusCode: 401, message: '로그인이 필요합니다.' }) } const q = getQuery(event) const page = parseInt(q.page as string) || 1 const limit = parseInt(q.limit as string) || 12 const category = q.category as string || '' const offset = (page - 1) * limit // 조건 구성 let whereClause = '' const countParams: any[] = [] if (category) { whereClause = 'WHERE f.category = $1' countParams.push(category) } // 전체 개수 const countResult = await query(` SELECT COUNT(*) as total FROM wr_feedback f ${whereClause} `, countParams) const total = parseInt(countResult[0].total) // 목록 조회 let feedbacks: any[] if (category) { feedbacks = await query(` SELECT f.feedback_id, f.author_id, e.employee_name as author_name, f.category, f.content, f.like_count, f.is_resolved, f.created_at, f.updated_at, EXISTS( SELECT 1 FROM wr_feedback_like fl WHERE fl.feedback_id = f.feedback_id AND fl.employee_id = $1 ) as is_liked FROM wr_feedback f JOIN wr_employee_info e ON f.author_id = e.employee_id WHERE f.category = $2 ORDER BY f.created_at DESC LIMIT $3 OFFSET $4 `, [userId, category, limit, offset]) } else { feedbacks = await query(` SELECT f.feedback_id, f.author_id, e.employee_name as author_name, f.category, f.content, f.like_count, f.is_resolved, f.created_at, f.updated_at, EXISTS( SELECT 1 FROM wr_feedback_like fl WHERE fl.feedback_id = f.feedback_id AND fl.employee_id = $1 ) as is_liked FROM wr_feedback f JOIN wr_employee_info e ON f.author_id = e.employee_id ORDER BY f.created_at DESC LIMIT $2 OFFSET $3 `, [userId, limit, offset]) } return { feedbacks: feedbacks.map((f: any) => ({ feedbackId: f.feedback_id, authorId: f.author_id, authorName: f.author_name, category: f.category, content: f.content, likeCount: f.like_count, isResolved: f.is_resolved, createdAt: f.created_at, updatedAt: f.updated_at, isLiked: f.is_liked, isOwner: f.author_id === parseInt(userId) })), pagination: { page, limit, total, totalPages: Math.ceil(total / limit) } } })