UNPKG

@qrvey/formula-lang

Version:

QFormula support for qrvey projects

47 lines 2 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.columnTranspilation = void 0; const constants_1 = require("../constants"); function columnTranspilation(engine, expression, globalContext) { const { value, context } = expression; if (!context || !context.replacement) return { value, type: constants_1.AST_TYPES.column, dataType: constants_1.AST_PRIMITIVES.UNKNOWN, node: expression, }; const columnForEngine = { [constants_1.ENGINES.ELASTICSEARCH]: elasticsearch, [constants_1.ENGINES.SNOWFLAKE]: sql, [constants_1.ENGINES.REDSHIFT]: sql, [constants_1.ENGINES.POSTGRESQL]: sql, }; const result = columnForEngine[engine](context, globalContext); return { value: result, dataType: context.type, type: constants_1.AST_TYPES.column, node: expression, }; } exports.columnTranspilation = columnTranspilation; function elasticsearch(context, globalContext) { const value = `GET_VALUE(doc['${context.replacement}'])`; if ((context === null || context === void 0 ? void 0 : context.type) === constants_1.AST_PRIMITIVES.DATE && (globalContext === null || globalContext === void 0 ? void 0 : globalContext.timezone)) { const offset = globalContext === null || globalContext === void 0 ? void 0 : globalContext.timezone.offset; return `${constants_1.ELASTICSEARCH_SCRIPT_NAMES.setTimezone}(${value}, '${offset}')`; } else if ((context === null || context === void 0 ? void 0 : context.type) === constants_1.AST_PRIMITIVES.NUMBER) { return `(double) ${value}`; } return value; } function sql(context) { const value = `"${context.replacement}"`; if ((context === null || context === void 0 ? void 0 : context.type) === constants_1.AST_PRIMITIVES.NUMBER) { return `${value}::FLOAT8`; } return value; } //# sourceMappingURL=columnTranspilation.js.map