import type { GiteaSettings, GiteaSettingsWrite, GiteaRepository, GiteaBranch, GiteaBranchCreate, GiteaPullRequest, GiteaBranchName, GiteaTestResult, } from './dto/gitea' import type { HydraCollection } from '~/utils/api' import { extractHydraMembers } from '~/utils/api' export function useGiteaService() { const api = useApi() async function getSettings(): Promise { return api.get('/settings/gitea') } async function saveSettings(payload: GiteaSettingsWrite): Promise { return api.put('/settings/gitea', payload as Record, { toastSuccessKey: 'gitea.settings.saved', }) } async function testConnection(): Promise { return api.post('/settings/gitea/test') } async function listRepositories(): Promise { const data = await api.get>('/gitea/repositories') return extractHydraMembers(data) } async function listBranches(taskId: number): Promise { const data = await api.get>(`/tasks/${taskId}/gitea/branches`) return extractHydraMembers(data) } async function createBranch(taskId: number, payload: GiteaBranchCreate): Promise { return api.post(`/tasks/${taskId}/gitea/branches`, payload as Record, { toastSuccessKey: 'gitea.branch.created', }) } async function listPullRequests(taskId: number): Promise { const data = await api.get>(`/tasks/${taskId}/gitea/pull-requests`) return extractHydraMembers(data) } async function getBranchName(taskId: number, type: string): Promise { return api.get(`/tasks/${taskId}/gitea/branch-name/${type}`) } return { getSettings, saveSettings, testConnection, listRepositories, listBranches, createBranch, listPullRequests, getBranchName, } }