diff --git a/src/lib/server/services/tasks.ts b/src/lib/server/services/tasks.ts index 1416c0e..90b0760 100644 --- a/src/lib/server/services/tasks.ts +++ b/src/lib/server/services/tasks.ts @@ -1,5 +1,6 @@ import { type DB, db } from "$lib/server/db/db"; import logger from "../logger"; + class TasksService { private db: DB; private caller: "internal" | "api"; @@ -24,6 +25,47 @@ class TasksService { return false as const; } } + + public async getByTaskId(taskIds: Array) { + const mappedTasks = taskIds.map(x => { + const prefix = x.slice(0, 2); + const task_id = x.slice(2); + return { prefix, task_id }; + }); + logger.info( + `Fetching ${ + taskIds.length === 0 + ? "0 records" + : taskIds.length < 10 + ? taskIds.join(", ") + : `${taskIds.length} records` + }.`, + ); + try { + const tasks = await db.query.tasks.findMany({ + with: { type: true }, + where: (tasks, { inArray }) => inArray(tasks.taskId, mappedTasks.map(x => x.task_id)), + }); + return { tasks, status: "ok" }; + } catch (error) { + logger.error({ msg: "Error querying the database.", error }); + return { status: "failed", error }; + } + } + + public async getByDbId(ids: Array) { + logger.info(`Fetching ${ids.length} records.`); + try { + const tasks = await db.query.tasks.findMany({ + with: { type: true }, + where: (tasks, { inArray }) => inArray(tasks.id, ids), + }); + return { tasks, status: "ok" }; + } catch (error) { + logger.error({ msg: "Error querying the database.", error }); + return { status: "failed", error }; + } + } } export default TasksService;