UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

62 lines 2 kB
"use strict"; 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