UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

60 lines 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MIN = void 0; const constants_1 = require("../constants"); const getValidDataTypeParam_1 = require("../utils/getValidDataTypeParam"); const isSameAndValidRecursiveDataType_1 = require("../utils/isSameAndValidRecursiveDataType"); /** * `MIN` Return the min value given. */ exports.MIN = { identifier: 'MIN', recursiveStartIn: 1, parameters: [ { identifier: 'VALUE_1', optional: false, validator: [ (0, isSameAndValidRecursiveDataType_1.isSameAndValidRecursiveDataType)(constants_1.DATE_AND_NUMBERS_DATA_TYPES), ], }, { identifier: 'VALUE_N', optional: false, validator: [ (0, isSameAndValidRecursiveDataType_1.isSameAndValidRecursiveDataType)(constants_1.DATE_AND_NUMBERS_DATA_TYPES), ], }, ], transpiler: { elasticsearch, snowflake, redshift, postgresql, }, primitiveResult(args) { return (0, getValidDataTypeParam_1.getValidDataTypeParam)(args, constants_1.DATE_AND_NUMBERS_DATA_TYPES); }, }; function elasticsearch(...args) { return `LEAST([${args.join(' , ')}])`; } function sql(...args) { return `LEAST(${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=min.js.map