File size: 1,132 Bytes
cce8120 | 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 39 40 41 42 43 44 45 | import { Todo } from '../types';
const API_URL = '/todos';
export const fetchTodos = async (): Promise<Todo[]> => {
const res = await fetch(API_URL);
if (!res.ok) {
throw new Error('Failed to fetch todos');
}
return res.json();
};
export const createTodo = async (data: { title: string; completed?: boolean }): Promise<Todo> => {
const res = await fetch(API_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data),
});
if (!res.ok) {
throw new Error('Failed to create todo');
}
return res.json();
};
export const updateTodo = async (id: number, data: Partial<Todo>): Promise<Todo> => {
const res = await fetch(`${API_URL}/${id}`, {
method: 'PUT',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data),
});
if (!res.ok) {
throw new Error('Failed to update todo');
}
return res.json();
};
export const deleteTodo = async (id: number): Promise<void> => {
const res = await fetch(`${API_URL}/${id}`, {
method: 'DELETE',
});
if (!res.ok) {
throw new Error('Failed to delete todo');
}
};
|