import type { RawTask, Task, TaskCreateData, TaskUpdateData } from "@/types"; function parseTask(task: RawTask): Task { return { id: task.id, name: task.name, reset_cron: task.reset_cron, check_date: task.check_date ? new Date(task.check_date) : null, previous_check_date: task.previous_check_date ? new Date(task.previous_check_date) : null, }; } export async function getTasks(list: string): Promise { const response = await fetch(`/api/lists/${list}/tasks`); return (await response.json()).map(parseTask); } export async function createTask( list: string, data: TaskCreateData, ): Promise { const response = await fetch(`/api/lists/${list}/tasks`, { method: "POST", body: JSON.stringify({ ...data }), headers: { "Content-Type": "application/json" }, }); return parseTask(await response.json()); } export async function updateTask( taskId: string, data: TaskUpdateData, ): Promise { const response = await fetch(`/api/tasks/${taskId}`, { method: "PUT", body: JSON.stringify({ ...data }), headers: { "Content-Type": "application/json" }, }); return parseTask(await response.json()); } export async function deleteTask(taskId: string): Promise { await fetch(`/api/tasks/${taskId}`, { method: "DELETE", }); }