@qrvey/formula-lang
Version:
QFormula support for qrvey projects
52 lines • 1.44 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SQRT = void 0;
const constants_1 = require("../constants");
const utils_1 = require("../utils");
const greaterThanOrEqualToReference_1 = require("../utils/greaterThanOrEqualToReference");
/**
* `SQRT` Returns the positive square root of a positive number.
*/
exports.SQRT = {
identifier: 'SQRT',
operationScope: constants_1.OPERATION_SCOPE.RAW,
functionScope: [constants_1.OPERATION_SCOPE.RAW, constants_1.OPERATION_SCOPE.AGGREGATE],
parameters: [
{
identifier: 'VALUE',
optional: false,
expectedPrimitive: constants_1.AST_PRIMITIVES.NUMBER,
validator: [utils_1.isNumberParam, (0, greaterThanOrEqualToReference_1.greaterThanOrEqualToReference)(0)],
},
],
transpiler: {
elasticsearch,
snowflake,
redshift,
postgresql,
databricks,
},
primitiveResult: constants_1.AST_PRIMITIVES.NUMBER,
};
function elasticsearch(value) {
return `SQRT(${value})`;
}
function sql(value) {
return `(CASE
WHEN ${value} < 0 THEN null
ELSE SQRT(${value})
END)`;
}
function snowflake(value) {
return sql(value);
}
function redshift(value) {
return sql(value);
}
function postgresql(value) {
return sql(value);
}
function databricks(value) {
return sql(value);
}
//# sourceMappingURL=sqrt.js.map