import { err, ok, type ReadonlyDB } from "@tailor-platform/erp-kit/core"; import type { DB } from "../generated/kysely-tailordb"; import { EligibilityRuleNotFoundError } from "../lib/errors.generated"; export interface GetEligibilityRuleInput { id: string; } /** * Function: getEligibilityRule * Description: Resolves a single EligibilityRule generation by its surrogate id. Because * eligibility is effective-dated (ADR-013), an id identifies exactly one generation, not the * whole history for its `versionOf`. */ export async function run(db: ReadonlyDB, input: GetEligibilityRuleInput) { const eligibilityRule = await db .selectFrom("EligibilityRule") .selectAll() .where("id", "=", input.id) .executeTakeFirst(); if (!eligibilityRule) { return err(new EligibilityRuleNotFoundError(input.id)); } return ok({ eligibilityRule }); }