import { err, ok, type ReadonlyDB } from "@tailor-platform/erp-kit/core"; import type { DB } from "../generated/kysely-tailordb"; import { LeaveRequestNotFoundError } from "../lib/errors.generated"; export interface GetLeaveRequestInput { id: string; } /** * Function: getLeaveRequest * Description: Retrieves a single LeaveRequest by id, in any status (PENDING, * APPROVED, REJECTED, CANCELLED, CANCEL_PENDING), for detail views and * lookups by the requester, an approver, or an administrator. */ export async function run(db: ReadonlyDB, input: GetLeaveRequestInput) { const leaveRequest = await db .selectFrom("LeaveRequest") .selectAll() .where("id", "=", input.id) .executeTakeFirst(); if (!leaveRequest) { return err(new LeaveRequestNotFoundError(input.id)); } return ok({ leaveRequest }); }