작업계획서대로 진행
This commit is contained in:
43
backend/api/todo/report/link.post.ts
Normal file
43
backend/api/todo/report/link.post.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { execute, queryOne } from '../../../utils/db'
|
||||
|
||||
interface LinkBody {
|
||||
todoId: number
|
||||
weeklyReportId: number
|
||||
markCompleted?: boolean
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO와 주간보고 연계
|
||||
* POST /api/todo/report/link
|
||||
*/
|
||||
export default defineEventHandler(async (event) => {
|
||||
const body = await readBody<LinkBody>(event)
|
||||
|
||||
if (!body.todoId || !body.weeklyReportId) {
|
||||
throw createError({ statusCode: 400, message: 'TODO ID와 주간보고 ID가 필요합니다.' })
|
||||
}
|
||||
|
||||
const todo = await queryOne('SELECT * FROM wr_todo WHERE todo_id = $1', [body.todoId])
|
||||
if (!todo) {
|
||||
throw createError({ statusCode: 404, message: 'TODO를 찾을 수 없습니다.' })
|
||||
}
|
||||
|
||||
const updates = ['weekly_report_id = $1', 'updated_at = NOW()']
|
||||
const values = [body.weeklyReportId]
|
||||
|
||||
if (body.markCompleted) {
|
||||
updates.push('status = $2', 'completed_at = NOW()')
|
||||
values.push('COMPLETED')
|
||||
}
|
||||
|
||||
values.push(body.todoId)
|
||||
|
||||
await execute(`
|
||||
UPDATE wr_todo SET ${updates.join(', ')} WHERE todo_id = $${values.length}
|
||||
`, values)
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: body.markCompleted ? 'TODO가 완료 처리되고 주간보고와 연계되었습니다.' : 'TODO가 주간보고와 연계되었습니다.'
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user