@qrvey/formula-lang
Version:
QFormula support for qrvey projects
43 lines • 1.06 kB
JavaScript
import { AST_PRIMITIVES } from '../constants';
import { isNumberParam } from '../utils';
import { greaterThanOrEqualToReference } from '../utils/greaterThanOrEqualToReference';
/**
* `SQRT` Returns the positive square root of a positive number.
*/
export const SQRT = {
identifier: 'SQRT',
parameters: [
{
identifier: 'VALUE',
optional: false,
expectedPrimitive: AST_PRIMITIVES.NUMBER,
validator: [isNumberParam, greaterThanOrEqualToReference(0)],
},
],
transpiler: {
elasticsearch,
snowflake,
redshift,
postgresql,
},
primitiveResult: 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);
}
//# sourceMappingURL=sqrt.js.map