68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { execute, queryOne } from '../../../utils/db'
|
|
import { getCurrentUserId } from '../../../utils/user'
|
|
|
|
interface UpdateBody {
|
|
serverName?: string
|
|
serverType?: string
|
|
serverUrl?: string
|
|
description?: string
|
|
isActive?: boolean
|
|
}
|
|
|
|
/**
|
|
* VCS 서버 수정
|
|
* PUT /api/vcs-server/[id]/update
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const serverId = Number(getRouterParam(event, 'id'))
|
|
const body = await readBody<UpdateBody>(event)
|
|
const userId = await getCurrentUserId(event)
|
|
|
|
const existing = await queryOne('SELECT * FROM wr_vcs_server WHERE server_id = $1', [serverId])
|
|
if (!existing) {
|
|
throw createError({ statusCode: 404, message: 'VCS 서버를 찾을 수 없습니다.' })
|
|
}
|
|
|
|
const updates: string[] = []
|
|
const values: any[] = []
|
|
let paramIndex = 1
|
|
|
|
if (body.serverName !== undefined) {
|
|
updates.push(`server_name = $${paramIndex++}`)
|
|
values.push(body.serverName)
|
|
}
|
|
|
|
if (body.serverType !== undefined) {
|
|
updates.push(`server_type = $${paramIndex++}`)
|
|
values.push(body.serverType)
|
|
}
|
|
|
|
if (body.serverUrl !== undefined) {
|
|
updates.push(`server_url = $${paramIndex++}`)
|
|
values.push(body.serverUrl)
|
|
}
|
|
|
|
if (body.description !== undefined) {
|
|
updates.push(`description = $${paramIndex++}`)
|
|
values.push(body.description)
|
|
}
|
|
|
|
if (body.isActive !== undefined) {
|
|
updates.push(`is_active = $${paramIndex++}`)
|
|
values.push(body.isActive)
|
|
}
|
|
|
|
if (updates.length === 0) {
|
|
return { success: true, message: '변경된 내용이 없습니다.' }
|
|
}
|
|
|
|
updates.push(`updated_at = NOW()`, `updated_by = $${paramIndex++}`)
|
|
values.push(userId, serverId)
|
|
|
|
await execute(`
|
|
UPDATE wr_vcs_server SET ${updates.join(', ')} WHERE server_id = $${paramIndex}
|
|
`, values)
|
|
|
|
return { success: true }
|
|
})
|