UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

57 lines 1.54 kB
import { DATE_AND_NUMBERS_DATA_TYPES } from '../constants'; import { getValidDataTypeParam } from '../utils/getValidDataTypeParam'; import { isSameAndValidRecursiveDataType } from '../utils/isSameAndValidRecursiveDataType'; /** * `MAX` Return the max value given. */ export const MAX = { identifier: 'MAX', recursiveStartIn: 1, parameters: [ { identifier: 'VALUE_1', optional: false, validator: [ isSameAndValidRecursiveDataType(DATE_AND_NUMBERS_DATA_TYPES), ], }, { identifier: 'VALUE_N', optional: false, validator: [ isSameAndValidRecursiveDataType(DATE_AND_NUMBERS_DATA_TYPES), ], }, ], transpiler: { elasticsearch, snowflake, redshift, postgresql, }, primitiveResult(args) { return getValidDataTypeParam(args, DATE_AND_NUMBERS_DATA_TYPES); }, }; function elasticsearch(...args) { return `GREATEST([${args.join(' , ')}])`; } function sql(...args) { return `GREATEST(${args.join(', ')})`; } function snowflake(...args) { return sql(...args); } function nullWrapper(args, _else) { return `(CASE WHEN ${args.map((_arg) => `${_arg} IS NULL`).join(' OR ')} THEN NULL ELSE ${_else} END)`; } function redshift(...args) { return nullWrapper(args, sql(...args)); } function postgresql(...args) { return nullWrapper(args, sql(...args)); } //# sourceMappingURL=max.js.map