import { query } from '../../utils/db' /** * 프로젝트 목록 조회 * GET /api/project/list */ export default defineEventHandler(async (event) => { const queryParams = getQuery(event) const status = queryParams.status as string || null const businessId = queryParams.businessId ? Number(queryParams.businessId) : null let sql = ` SELECT p.*, b.business_name, (SELECT employee_name FROM wr_employee_info e JOIN wr_project_manager_history pm ON e.employee_id = pm.employee_id WHERE pm.project_id = p.project_id AND pm.role_type = 'PM' AND (pm.end_date IS NULL OR pm.end_date >= CURRENT_DATE) LIMIT 1) as pm_name, (SELECT employee_name FROM wr_employee_info e JOIN wr_project_manager_history pm ON e.employee_id = pm.employee_id WHERE pm.project_id = p.project_id AND pm.role_type = 'PL' AND (pm.end_date IS NULL OR pm.end_date >= CURRENT_DATE) LIMIT 1) as pl_name FROM wr_project_info p LEFT JOIN wr_business b ON p.business_id = b.business_id ` const conditions: string[] = [] const params: any[] = [] let paramIndex = 1 if (status) { conditions.push(`p.project_status = $${paramIndex++}`) params.push(status) } if (businessId) { conditions.push(`p.business_id = $${paramIndex++}`) params.push(businessId) } if (conditions.length > 0) { sql += ' WHERE ' + conditions.join(' AND ') } sql += ' ORDER BY p.created_at DESC' const projects = await query(sql, params) return { projects: projects.map((p: any) => ({ projectId: p.project_id, projectCode: p.project_code, projectName: p.project_name, projectType: p.project_type || 'SI', clientName: p.client_name, projectDescription: p.project_description, startDate: p.start_date, endDate: p.end_date, contractAmount: p.contract_amount, projectStatus: p.project_status, businessId: p.business_id, businessName: p.business_name, pmName: p.pm_name, plName: p.pl_name, createdAt: p.created_at })) } })