53 lines
1.4 KiB
TypeScript
53 lines
1.4 KiB
TypeScript
import { insertReturning } from '../../utils/db'
|
|
import { getCurrentUserId } from '../../utils/user'
|
|
|
|
interface CreateBody {
|
|
serverName: string
|
|
serverType: string // git | svn
|
|
serverUrl: string
|
|
description?: string
|
|
}
|
|
|
|
/**
|
|
* VCS 서버 등록
|
|
* POST /api/vcs-server/create
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
const body = await readBody<CreateBody>(event)
|
|
const userId = await getCurrentUserId(event)
|
|
|
|
if (!body.serverName?.trim()) {
|
|
throw createError({ statusCode: 400, message: '서버명을 입력해주세요.' })
|
|
}
|
|
|
|
if (!body.serverType || !['git', 'svn'].includes(body.serverType)) {
|
|
throw createError({ statusCode: 400, message: '서버 유형을 선택해주세요 (git/svn).' })
|
|
}
|
|
|
|
if (!body.serverUrl?.trim()) {
|
|
throw createError({ statusCode: 400, message: '서버 URL을 입력해주세요.' })
|
|
}
|
|
|
|
const result = await insertReturning(`
|
|
INSERT INTO wr_vcs_server (server_name, server_type, server_url, description, is_active, created_by)
|
|
VALUES ($1, $2, $3, $4, true, $5)
|
|
RETURNING *
|
|
`, [
|
|
body.serverName.trim(),
|
|
body.serverType,
|
|
body.serverUrl.trim(),
|
|
body.description || null,
|
|
userId
|
|
])
|
|
|
|
return {
|
|
success: true,
|
|
server: {
|
|
serverId: result.server_id,
|
|
serverName: result.server_name,
|
|
serverType: result.server_type,
|
|
serverUrl: result.server_url
|
|
}
|
|
}
|
|
})
|