import { DEFAULT_PAGE_SIZE, buildPaginatedResult, ok, type PaginationInput, type ReadonlyDB, } from "@tailor-platform/erp-kit/core"; import type { DB } from "../generated/kysely-tailordb"; export type ListHolidayCalendarsInput = PaginationInput; /** * Function: listHolidayCalendars * Description: Returns a paginated list of HolidayCalendars for admin review * and for choosing the calendar a WorkRule or CompanyHoliday binds to. */ export async function run(db: ReadonlyDB, input: ListHolidayCalendarsInput) { const limit = input.limit ?? DEFAULT_PAGE_SIZE; const offset = input.offset ?? 0; const orderBy = input.orderBy ?? "id"; const orderDirection = input.orderDirection ?? "asc"; const holidayCalendars = await db .selectFrom("HolidayCalendar") .selectAll() .orderBy(orderBy, orderDirection) .limit(limit + 1) .offset(offset) .execute(); return ok(buildPaginatedResult(holidayCalendars, limit)); }