From 9883e643e6f5b5207e554002092b9c855386a782 Mon Sep 17 00:00:00 2001 From: themodrnhakr Date: Sat, 4 Oct 2025 01:31:42 -0500 Subject: [PATCH] Convert tasks list and task view to Remote Function queries. --- src/lib/remotes/TasksRemote.remote.ts | 57 +++++++++++++ src/lib/ui/Tasks/TaskView.svelte | 94 +++++++--------------- src/routes/tasks/+page.server.ts | 10 --- src/routes/tasks/+page.svelte | 34 +++++--- src/routes/tasks/[task_id]/+page.server.ts | 1 + src/routes/tasks/[task_id]/+page.svelte | 38 ++++----- 6 files changed, 133 insertions(+), 101 deletions(-) create mode 100644 src/lib/remotes/TasksRemote.remote.ts delete mode 100644 src/routes/tasks/+page.server.ts diff --git a/src/lib/remotes/TasksRemote.remote.ts b/src/lib/remotes/TasksRemote.remote.ts new file mode 100644 index 0000000..a766f2d --- /dev/null +++ b/src/lib/remotes/TasksRemote.remote.ts @@ -0,0 +1,57 @@ +import { query } from "$app/server"; +import TasksService from "$lib/server/services/TasksService"; +import { error } from "@sveltejs/kit"; +import * as z from "zod"; + +const service = new TasksService("internal"); + +export const getAllTasks = query(async () => { + const tasksResponse = await service.getAll(); + + if (tasksResponse.status === "failure") { + const errorMessage = tasksResponse.error instanceof Error + ? tasksResponse.error.message + : tasksResponse.error ?? "Internal error."; + throw new Error(errorMessage); + } + if (!tasksResponse.data) { + throw new Error("Internal error"); + } + + return tasksResponse.data; +}); + +export const getOneTask = query(z.union([z.string(), z.number()]), async (lookup_field: string | number) => { + const tasksResponse = typeof lookup_field === "string" + ? await service.getByTaskId([lookup_field]) + : await service.getByDbId([lookup_field]); + + if (tasksResponse.status === "failure") { + const errorMessage = tasksResponse.error instanceof Error + ? tasksResponse.error.message + : tasksResponse.error ?? "Internal error"; + throw new Error(errorMessage); + } + + if (!tasksResponse.data) { + error(500, "Internal error. (check the logs)"); + } + const task = tasksResponse.data[0]; + + const parentResponse = task.parent ? await service.getByDbId([task.parent]) : null; + const parent = (!parentResponse || parentResponse.status === "failure" || !parentResponse.data + || parentResponse.data[0].type.prefix) + ? null + : parentResponse.data[0]; + + const childrenResponse = await service.getByParent(task.id); + const children = (!childrenResponse || childrenResponse.status === "failure" || !childrenResponse.data) + ? [] + : childrenResponse.data; + + return { + task, + parent, + children, + }; +}); diff --git a/src/lib/ui/Tasks/TaskView.svelte b/src/lib/ui/Tasks/TaskView.svelte index 6750c19..048bd51 100644 --- a/src/lib/ui/Tasks/TaskView.svelte +++ b/src/lib/ui/Tasks/TaskView.svelte @@ -1,41 +1,28 @@ -{@render description(task.type.prefix, task.taskId, task.description)} -{@render details( - task.status, - task.priority, - task.openDate, - task.closeDate, - parent, - children, - )} -{@render checklist(task.checklist)} -{@render body(task.body, task.bodyHistory)} -{@render integrations(task.integrations)} + + {@const { task, parent, children } = await taskRemote} + {@render description(task.type.prefix, task.taskId, task.description)} + {@render details( + task.status, + task.priority, + task.openDate, + task.closeDate, + parent, + children, + )} + {@render checklist(task.checklist)} + {@render body(task.body, task.bodyHistory)} + {@render integrations(task.integrations)} +