Spaces:
Sleeping
Sleeping
| import { Todo, TodoCreateRequest, TodoUpdateRequest, ResponseData } from '../types'; | |
| import apiClient from '@/lib/api/axios-instance'; | |
| import { createHeaders } from '@/lib/api'; | |
| import { get, getList, post, put, del } from '../lib/api/api-utils'; | |
| class TodoService { | |
| private baseUrl = `/api/Todos`; | |
| async getAllTodos(): Promise<ResponseData<Todo[]>> { | |
| return getList<Todo>(this.baseUrl); | |
| } | |
| async getTodoById(id: number): Promise<ResponseData<Todo>> { | |
| return get<Todo>(`${this.baseUrl}/${id}`); | |
| } | |
| async createTodo(todo: TodoCreateRequest): Promise<ResponseData<Todo>> { | |
| return post<Todo, TodoCreateRequest>(this.baseUrl, todo); | |
| } | |
| async updateTodo(todo: TodoUpdateRequest): Promise<ResponseData<Todo>> { | |
| return put<Todo, TodoUpdateRequest>(`${this.baseUrl}/${todo.id}`, todo); | |
| } | |
| async deleteTodo(id: number): Promise<ResponseData<boolean>> { | |
| return del(`${this.baseUrl}/${id}`); | |
| } | |
| async getTodosByProject(projectId: number): Promise<ResponseData<Todo[]>> { | |
| return getList<Todo>(`${this.baseUrl}?projectId=${projectId}`); | |
| } | |
| async getTodosByAssignee(assigneeId: number): Promise<ResponseData<Todo[]>> { | |
| return getList<Todo>(`${this.baseUrl}/assignee/${assigneeId}`); | |
| } | |
| } | |
| export const todoService = new TodoService(); |