추가
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
import { execute, queryOne } from '../../../utils/db'
|
||||
import { getClientIp } from '../../../utils/ip'
|
||||
import { getCurrentUserEmail } from '../../../utils/user'
|
||||
|
||||
interface UpdateProjectBody {
|
||||
projectCode?: string
|
||||
projectName?: string
|
||||
projectType?: string
|
||||
clientName?: string
|
||||
projectDescription?: string
|
||||
startDate?: string
|
||||
@@ -18,6 +20,8 @@ interface UpdateProjectBody {
|
||||
export default defineEventHandler(async (event) => {
|
||||
const projectId = getRouterParam(event, 'id')
|
||||
const body = await readBody<UpdateProjectBody>(event)
|
||||
const clientIp = getClientIp(event)
|
||||
const userEmail = await getCurrentUserEmail(event)
|
||||
|
||||
const existing = await queryOne<any>(`
|
||||
SELECT * FROM wr_project_info WHERE project_id = $1
|
||||
@@ -27,27 +31,36 @@ export default defineEventHandler(async (event) => {
|
||||
throw createError({ statusCode: 404, message: '프로젝트를 찾을 수 없습니다.' })
|
||||
}
|
||||
|
||||
// 프로젝트 유형 검증
|
||||
if (body.projectType && !['SI', 'SM'].includes(body.projectType)) {
|
||||
throw createError({ statusCode: 400, message: '프로젝트 유형은 SI 또는 SM이어야 합니다.' })
|
||||
}
|
||||
|
||||
await execute(`
|
||||
UPDATE wr_project_info SET
|
||||
project_code = $1,
|
||||
project_name = $2,
|
||||
project_name = $1,
|
||||
project_type = $2,
|
||||
client_name = $3,
|
||||
project_description = $4,
|
||||
start_date = $5,
|
||||
end_date = $6,
|
||||
contract_amount = $7,
|
||||
project_status = $8,
|
||||
updated_at = NOW()
|
||||
WHERE project_id = $9
|
||||
updated_at = NOW(),
|
||||
updated_ip = $9,
|
||||
updated_email = $10
|
||||
WHERE project_id = $11
|
||||
`, [
|
||||
body.projectCode ?? existing.project_code,
|
||||
body.projectName ?? existing.project_name,
|
||||
body.projectType ?? existing.project_type ?? 'SI',
|
||||
body.clientName ?? existing.client_name,
|
||||
body.projectDescription ?? existing.project_description,
|
||||
body.startDate ?? existing.start_date,
|
||||
body.endDate ?? existing.end_date,
|
||||
body.contractAmount ?? existing.contract_amount,
|
||||
body.projectStatus ?? existing.project_status,
|
||||
clientIp,
|
||||
userEmail,
|
||||
projectId
|
||||
])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user