@qrvey/formula-lang
Version:
QFormula support for qrvey projects
60 lines • 1.76 kB
JavaScript
;
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