import { query } from '../../../utils/db' import { requireAuth } from '../../../utils/session' import { syncGitRepository } from '../../../utils/git-sync' import { syncSvnRepository } from '../../../utils/svn-sync' /** * 전체 VCS 저장소 동기화 (관리자용) * POST /api/admin/vcs/sync-all */ export default defineEventHandler(async (event) => { await requireAuth(event) // 모든 활성 저장소 조회 const repos = await query(` SELECT r.repo_id, r.repo_name, s.server_type FROM wr_repository r JOIN wr_vcs_server s ON r.server_id = s.server_id WHERE r.is_active = true AND s.is_active = true ORDER BY r.repo_name `) const results: any[] = [] for (const repo of repos) { try { let result if (repo.server_type === 'GIT') { result = await syncGitRepository(repo.repo_id) } else if (repo.server_type === 'SVN') { result = await syncSvnRepository(repo.repo_id) } else { result = { success: false, message: '지원하지 않는 서버 타입' } } results.push({ repoId: repo.repo_id, repoName: repo.repo_name, serverType: repo.server_type, ...result }) } catch (e: any) { results.push({ repoId: repo.repo_id, repoName: repo.repo_name, serverType: repo.server_type, success: false, message: e.message }) } } const successCount = results.filter(r => r.success).length const failCount = results.filter(r => !r.success).length return { success: failCount === 0, message: `동기화 완료: 성공 ${successCount}개, 실패 ${failCount}개`, totalRepos: repos.length, successCount, failCount, results } })