import { api } from './client'; import type { Epic, CreateEpicDto, UpdateEpicDto, Story, CreateStoryDto, UpdateStoryDto, Task, CreateTaskDto, UpdateTaskDto, WorkItemStatus, } from '@/types/project'; // ==================== Epics API ==================== export const epicsApi = { list: async (projectId?: string): Promise => { const params = projectId ? { projectId } : undefined; return api.get('/api/v1/epics', { params }); }, get: async (id: string): Promise => { return api.get(`/api/v1/epics/${id}`); }, create: async (data: CreateEpicDto): Promise => { return api.post('/api/v1/epics', data); }, update: async (id: string, data: UpdateEpicDto): Promise => { return api.put(`/api/v1/epics/${id}`, data); }, delete: async (id: string): Promise => { return api.delete(`/api/v1/epics/${id}`); }, changeStatus: async (id: string, status: WorkItemStatus): Promise => { return api.put(`/api/v1/epics/${id}/status`, { status }); }, assign: async (id: string, assigneeId: string): Promise => { return api.put(`/api/v1/epics/${id}/assign`, { assigneeId }); }, }; // ==================== Stories API ==================== export const storiesApi = { list: async (epicId?: string): Promise => { const params = epicId ? { epicId } : undefined; return api.get('/api/v1/stories', { params }); }, get: async (id: string): Promise => { return api.get(`/api/v1/stories/${id}`); }, create: async (data: CreateStoryDto): Promise => { return api.post('/api/v1/stories', data); }, update: async (id: string, data: UpdateStoryDto): Promise => { return api.put(`/api/v1/stories/${id}`, data); }, delete: async (id: string): Promise => { return api.delete(`/api/v1/stories/${id}`); }, changeStatus: async (id: string, status: WorkItemStatus): Promise => { return api.put(`/api/v1/stories/${id}/status`, { status }); }, assign: async (id: string, assigneeId: string): Promise => { return api.put(`/api/v1/stories/${id}/assign`, { assigneeId }); }, }; // ==================== Tasks API ==================== export const tasksApi = { list: async (storyId?: string): Promise => { const params = storyId ? { storyId } : undefined; return api.get('/api/v1/tasks', { params }); }, get: async (id: string): Promise => { return api.get(`/api/v1/tasks/${id}`); }, create: async (data: CreateTaskDto): Promise => { return api.post('/api/v1/tasks', data); }, update: async (id: string, data: UpdateTaskDto): Promise => { return api.put(`/api/v1/tasks/${id}`, data); }, delete: async (id: string): Promise => { return api.delete(`/api/v1/tasks/${id}`); }, changeStatus: async (id: string, status: WorkItemStatus): Promise => { return api.put(`/api/v1/tasks/${id}/status`, { status }); }, assign: async (id: string, assigneeId: string): Promise => { return api.put(`/api/v1/tasks/${id}/assign`, { assigneeId }); }, };