Files
weeklyreport/backend/api/employee/[id]/update.put.ts
2026-01-04 20:58:47 +09:00

58 lines
1.5 KiB
TypeScript

import { execute, queryOne } from '../../../utils/db'
import { getClientIp } from '../../../utils/ip'
import { getCurrentUserEmail } from '../../../utils/user'
interface UpdateEmployeeBody {
employeeName?: string
employeePhone?: string
employeePosition?: string
company?: string
joinDate?: string
isActive?: boolean
}
/**
* 직원 정보 수정
* PUT /api/employee/[id]/update
*/
export default defineEventHandler(async (event) => {
const employeeId = getRouterParam(event, 'id')
const body = await readBody<UpdateEmployeeBody>(event)
const clientIp = getClientIp(event)
const userEmail = await getCurrentUserEmail(event)
const existing = await queryOne<any>(`
SELECT * FROM wr_employee_info WHERE employee_id = $1
`, [employeeId])
if (!existing) {
throw createError({ statusCode: 404, message: '직원을 찾을 수 없습니다.' })
}
await execute(`
UPDATE wr_employee_info SET
employee_name = $1,
employee_phone = $2,
employee_position = $3,
company = $4,
join_date = $5,
is_active = $6,
updated_at = NOW(),
updated_ip = $7,
updated_email = $8
WHERE employee_id = $9
`, [
body.employeeName ?? existing.employee_name,
body.employeePhone ?? existing.employee_phone,
body.employeePosition ?? existing.employee_position,
body.company ?? existing.company,
body.joinDate ?? existing.join_date,
body.isActive ?? existing.is_active,
clientIp,
userEmail,
employeeId
])
return { success: true }
})