39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import { queryOne } from '../../../utils/db'
|
|
import { requireAuth } from '../../../utils/session'
|
|
import { syncGitRepository } from '../../../utils/git-sync'
|
|
|
|
/**
|
|
* 저장소 동기화 (수동)
|
|
* POST /api/repository/[id]/sync
|
|
*/
|
|
export default defineEventHandler(async (event) => {
|
|
await requireAuth(event)
|
|
const repoId = parseInt(getRouterParam(event, 'id') || '0')
|
|
|
|
if (!repoId) {
|
|
throw createError({ statusCode: 400, message: '저장소 ID가 필요합니다.' })
|
|
}
|
|
|
|
// 저장소 정보 확인
|
|
const repo = await queryOne(`
|
|
SELECT r.*, s.server_type
|
|
FROM wr_repository r
|
|
JOIN wr_vcs_server s ON r.server_id = s.server_id
|
|
WHERE r.repo_id = $1
|
|
`, [repoId])
|
|
|
|
if (!repo) {
|
|
throw createError({ statusCode: 404, message: '저장소를 찾을 수 없습니다.' })
|
|
}
|
|
|
|
if (repo.server_type === 'GIT') {
|
|
const result = await syncGitRepository(repoId)
|
|
return result
|
|
} else if (repo.server_type === 'SVN') {
|
|
// SVN은 별도 구현 예정
|
|
return { success: false, message: 'SVN 동기화는 준비 중입니다.' }
|
|
}
|
|
|
|
return { success: false, message: '지원하지 않는 서버 타입입니다.' }
|
|
})
|