@qrvey/formula-lang
Version:
QFormula support for qrvey projects
62 lines • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DATEDIF = void 0;
const constants_1 = require("../constants");
const scripts_1 = require("../utils/elasticsearch/scripts");
const scripts_2 = require("../utils/sql/scripts");
const utils_1 = require("../utils");
const isAnAllowedValue_1 = require("../utils/isAnAllowedValue");
/**
* Returns the number of the DATEDIF in a Date.
*/
exports.DATEDIF = {
identifier: 'DATEDIF',
parameters: [
{
identifier: 'START_DATE',
optional: false,
expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
validator: [utils_1.isDateParam],
},
{
identifier: 'END_DATE',
optional: false,
expectedPrimitive: constants_1.AST_PRIMITIVES.DATE,
validator: [utils_1.isDateParam],
},
{
identifier: 'UNIT',
optional: false,
expectedPrimitive: constants_1.AST_PRIMITIVES.STRING,
validator: [utils_1.isStringParam, (0, isAnAllowedValue_1.isAnAllowedValue)(['Y', 'M', 'D'])],
},
],
transpiler: {
elasticsearch,
snowflake,
redshift,
postgresql,
},
primitiveResult: constants_1.AST_PRIMITIVES.NUMBER,
};
function elasticsearch(start, end, unit) {
unit = (0, utils_1.removeQuotes)(unit);
return (0, scripts_1.dateDif)(start, end, unit);
}
function SQL(start, end, unit) {
unit = (0, utils_1.removeQuotes)(unit);
return (0, scripts_2.dateDif)(start, end, unit);
}
function snowflake(start, end, unit) {
return SQL(start, end, unit);
}
function redshift(start, end, unit) {
const result = SQL(start, end, unit);
return `CAST(${result} AS INT)`;
}
function postgresql(start, end, unit) {
unit = (0, utils_1.removeQuotes)(unit);
const result = (0, scripts_2.dateDifPostgres)(start, end, unit);
return `CAST(${result} AS INT)`;
}
//# sourceMappingURL=datedif.js.map