import type { Workflow, WorkflowWrite } from './dto/workflow' import type { HydraCollection } from '~/utils/api' import { extractHydraMembers } from '~/utils/api' type SwitchPayload = { workflowId: number mapping: Record } type SwitchResult = { projectId: number workflowId: number migratedTaskCount: number } export function useWorkflowService() { const api = useApi() async function getAll(): Promise { const data = await api.get>('/workflows') return extractHydraMembers(data) } async function getOne(id: number): Promise { return api.get(`/workflows/${id}`) } async function create(payload: WorkflowWrite): Promise { return api.post('/workflows', payload as Record, { toastSuccessKey: 'workflows.created', }) } async function update(id: number, payload: Partial): Promise { return api.patch(`/workflows/${id}`, payload as Record, { toastSuccessKey: 'workflows.updated', }) } async function remove(id: number): Promise { await api.delete(`/workflows/${id}`, {}, { toastSuccessKey: 'workflows.deleted', }) } async function switchOnProject(projectId: number, payload: SwitchPayload): Promise { return api.post( `/projects/${projectId}/switch-workflow`, payload as unknown as Record, { toastSuccessKey: 'workflows.switched' }, ) } return { getAll, getOne, create, update, remove, switchOnProject } }