작업계획서대로 진행
This commit is contained in:
67
backend/api/repository/list.get.ts
Normal file
67
backend/api/repository/list.get.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { query } from '../../utils/db'
|
||||
|
||||
/**
|
||||
* 저장소 목록 조회
|
||||
* GET /api/repository/list
|
||||
*/
|
||||
export default defineEventHandler(async (event) => {
|
||||
const params = getQuery(event)
|
||||
const projectId = params.projectId ? Number(params.projectId) : null
|
||||
const serverId = params.serverId ? Number(params.serverId) : null
|
||||
const includeInactive = params.includeInactive === 'true'
|
||||
|
||||
const conditions: string[] = []
|
||||
const values: any[] = []
|
||||
let paramIndex = 1
|
||||
|
||||
if (projectId) {
|
||||
conditions.push(`r.project_id = $${paramIndex++}`)
|
||||
values.push(projectId)
|
||||
}
|
||||
|
||||
if (serverId) {
|
||||
conditions.push(`r.server_id = $${paramIndex++}`)
|
||||
values.push(serverId)
|
||||
}
|
||||
|
||||
if (!includeInactive) {
|
||||
conditions.push('r.is_active = true')
|
||||
}
|
||||
|
||||
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : ''
|
||||
|
||||
const repos = await query(`
|
||||
SELECT
|
||||
r.*,
|
||||
s.server_name,
|
||||
s.server_type,
|
||||
p.project_name,
|
||||
e.employee_name as created_by_name
|
||||
FROM wr_repository r
|
||||
JOIN wr_vcs_server s ON r.server_id = s.server_id
|
||||
LEFT JOIN wr_project_info p ON r.project_id = p.project_id
|
||||
LEFT JOIN wr_employee_info e ON r.created_by = e.employee_id
|
||||
${whereClause}
|
||||
ORDER BY r.repo_name
|
||||
`, values)
|
||||
|
||||
return {
|
||||
repositories: repos.map((r: any) => ({
|
||||
repoId: r.repo_id,
|
||||
serverId: r.server_id,
|
||||
serverName: r.server_name,
|
||||
serverType: r.server_type,
|
||||
projectId: r.project_id,
|
||||
projectName: r.project_name,
|
||||
repoName: r.repo_name,
|
||||
repoPath: r.repo_path,
|
||||
repoUrl: r.repo_url,
|
||||
defaultBranch: r.default_branch,
|
||||
description: r.description,
|
||||
isActive: r.is_active,
|
||||
lastSyncAt: r.last_sync_at,
|
||||
createdAt: r.created_at,
|
||||
createdByName: r.created_by_name
|
||||
}))
|
||||
}
|
||||
})
|
||||
Reference in New Issue
Block a user