Spaces:
Sleeping
Sleeping
File size: 1,317 Bytes
d97b8f9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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(); |