// 部署配置:仓库 / 镜像 / 环境 / 组 / 工具 / Item Role // Logan.Li import { http, type ListResponse } from '@/utils/request'; export const deployApi = { // Git 仓库认证 getRepos: () => http.get('/deploy/repos'), getRepo: (id: number | string) => http.get(`/deploy/repos/${id}`), createRepo: ( data: Record) => http.post('/deploy/repos', data), updateRepo: (id: number | string, data: Record) => http.put(`/deploy/repos/${id}`, data), deleteRepo: (id: number | string) => http.delete(`/deploy/repos/${id}`), // 镜像仓库认证 getRegistries: () => http.get('/deploy/registries'), getRegistry: (id: number | string) => http.get(`/deploy/registries/${id}`), createRegistry: ( data: Record) => http.post('/deploy/registries', data), updateRegistry: (id: number | string, data: Record) => http.put(`/deploy/registries/${id}`, data), deleteRegistry: (id: number | string) => http.delete(`/deploy/registries/${id}`), // 环境管理 getEnvironments: () => http.get('/deploy/environments'), createEnvironment: ( data: Record) => http.post('/deploy/environments', data), updateEnvironment: (id: number | string, data: Record) => http.put(`/deploy/environments/${id}`, data), deleteEnvironment: (id: number | string) => http.delete(`/deploy/environments/${id}`), // Item Role 权限管理 (Jenkins Role Strategy 风格) getItemRoles: () => http.get('/admin/item-roles'), createItemRole: ( data: Record) => http.post('/admin/item-roles', data), updateItemRole: (id: number | string, data: Record) => http.put(`/admin/item-roles/${id}`, data), deleteItemRole: (id: number | string) => http.delete(`/admin/item-roles/${id}`), getUserItemRoles: (userId: number | string) => http.get(`/admin/users/${userId}/item-roles`), assignItemRole: (userId: number | string, data: { user_id: number; item_role_id: number }) => http.post(`/admin/users/${userId}/item-roles`, data), removeItemRole: (userId: number | string, roleId: number | string) => http.delete(`/admin/users/${userId}/item-roles/${roleId}`), // 用户组管理 getGroups: () => http.get('/deploy/groups'), createGroup: ( data: Record) => http.post('/deploy/groups', data), updateGroup: (id: number | string, data: Record) => http.put(`/deploy/groups/${id}`, data), deleteGroup: (id: number | string) => http.delete(`/deploy/groups/${id}`), getGroupMembers: (id: number | string) => http.get(`/deploy/groups/${id}/members`), addGroupMember: (id: number | string, data: { username: string }) => http.post(`/deploy/groups/${id}/members`, data), removeGroupMember: (id: number | string, memberId: number | string) => http.delete(`/deploy/groups/${id}/members/${memberId}`), // 工具配置 getTools: () => http.get('/deploy/tools'), getTool: (id: number | string) => http.get(`/deploy/tools/${id}`), updateTool: (id: number | string, data: Record) => http.put(`/deploy/tools/${id}`, data), installTool: (id: number | string, version?: string) => http.post(`/deploy/tools/${id}/install`, version ? { version } : {}), uninstallTool: (id: number | string) => http.post(`/deploy/tools/${id}/uninstall`), checkTool: (id: number | string) => http.post(`/deploy/tools/${id}/check`), getToolVersions: (id: number | string) => http.get(`/deploy/tools/${id}/versions`), };