Files
weeklyreport/backend/api/vcs-server/create.post.ts

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
}
}
})