pmtool / src /services /todoService.ts
devarshia5's picture
Upload 487 files
d97b8f9 verified
Raw
History Blame Contribute Delete
1.32 kB
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();