diff --git a/resources/ts/api/tasks.ts b/resources/ts/api/tasks.ts new file mode 100644 index 0000000..2ed17d4 --- /dev/null +++ b/resources/ts/api/tasks.ts @@ -0,0 +1,37 @@ +import type { RawTask, TaskCreateData, TaskUpdateData } from "@/types"; + +export async function getTasks(list: string): Promise { + const response = await fetch(`/api/lists/${list}/tasks`); + return await response.json(); +} + +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 await response.json(); +} + +export async function updateTask( + list: string, + taskId: string, + data: TaskUpdateData, +): Promise { + const response = await fetch(`/api/lists/${list}/tasks/${taskId}`, { + method: "PUT", + body: JSON.stringify({ data }), + headers: { "Content-Type": "application/json" }, + }); + return await response.json(); +} + +export async function deleteTask(list: string, taskId: string): Promise { + await fetch(`/api/lists/${list}/tasks/${taskId}`, { + method: "DELETE", + }); +} diff --git a/resources/ts/types.ts b/resources/ts/types.ts index 4fea679..c3c956b 100644 --- a/resources/ts/types.ts +++ b/resources/ts/types.ts @@ -4,3 +4,28 @@ export interface Comment { updated_at: string; content: string; } + +export interface RawTask { + id: string; + created_at: string; + updated_at: string; + list: string; + name: string; + reset_cron: string | null; + check_date: string | null; + previous_check_date: string | null; +} + +export interface TaskCreateData { + name: string; + reset_cron: string | null; + check_date?: string | null; + previous_check_date?: string | null; +} + +export interface TaskUpdateData { + name?: string; + reset_cron?: string | null; + check_date?: string | null; + previous_check_date?: string | null; +}