Files
weeklyreport/backend/api/project/my-projects.get.ts
2026-01-05 02:00:13 +09:00

36 lines
1.1 KiB
TypeScript

import { query } from '../../utils/db'
/**
* 내가 보고서 작성한 프로젝트 목록
* GET /api/project/my-projects
*/
export default defineEventHandler(async (event) => {
const userId = getCookie(event, 'user_id')
if (!userId) {
throw createError({ statusCode: 401, message: '로그인이 필요합니다.' })
}
// 내가 주간보고를 작성한 프로젝트 + 전체 활성 프로젝트
const projects = await query(`
SELECT DISTINCT p.*,
CASE WHEN t.project_id IS NOT NULL THEN true ELSE false END as has_my_report
FROM wr_project_info p
LEFT JOIN (
SELECT DISTINCT t.project_id
FROM wr_weekly_report_task t
JOIN wr_weekly_report r ON t.report_id = r.report_id
WHERE r.author_id = $1
) t ON p.project_id = t.project_id
WHERE p.project_status = 'ACTIVE'
ORDER BY has_my_report DESC, p.project_name
`, [parseInt(userId)])
return projects.map((p: any) => ({
projectId: p.project_id,
projectCode: p.project_code,
projectName: p.project_name,
clientName: p.client_name,
hasMyReport: p.has_my_report
}))
})