import { err, ok, type ReadonlyDB } from "@tailor-platform/erp-kit/core"; import type { DB } from "../generated/kysely-tailordb"; import { TimecardNotFoundError } from "../lib/errors.generated"; export interface GetTimecardInput { timecardId: string; } /** * Function: getTimecard * Retrieves a single Timecard by its id, in any lifecycle status (OPEN, * SUBMITTED, APPROVED, LOCKED). */ export async function run(db: ReadonlyDB, input: GetTimecardInput) { const timecard = await db .selectFrom("Timecard") .selectAll() .where("id", "=", input.timecardId) .executeTakeFirst(); if (!timecard) { return err(new TimecardNotFoundError(input.timecardId)); } return ok({ timecard }); }