import { type CommonReservedFields, type NoReservedFields, defaultGqlPermission, defaultPermission, } from "@tailor-platform/erp-kit/core"; import { db, type TailorAnyDBField } from "@tailor-platform/sdk"; const builtins = { sourceCurrencyId: db.uuid().description("Foreign key to source Currency"), targetCurrencyId: db.uuid().description("Foreign key to target Currency"), rate: db.float().description("Conversion rate (source x rate = target)"), effectiveDate: db.date().description("Date from which this rate applies"), }; type ReservedFields = keyof typeof builtins | CommonReservedFields; export interface CreateExchangeRateTypeParams> { fields?: NoReservedFields; } export function createExchangeRateType>( params: CreateExchangeRateTypeParams, ) { return db .table("ExchangeRate", { ...builtins, ...((params.fields ?? {}) as F), ...db.fields.timestamps(), }) .permission(defaultPermission) .gqlPermission(defaultGqlPermission); } export const exchangeRate = createExchangeRateType({});