import { type DB, db } from "$lib/server/db/db"; import logger from "../logger"; class TasksService { private db: DB; private caller: "internal" | "api"; constructor(caller: "internal" | "api", dbClient: DB = db) { this.db = dbClient; this.caller = caller; } public async getAll() { logger.info("Fetching all task records..."); try { const result = await this.db.query.tasks.findMany({ with: { type: true, }, }); logger.debug(`Found ${result.length} records.`); return result; } catch (e) { logger.error({ msg: "Error querying the database.", error: e }); 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;