UNPKG

lite-ui-sql-parser

Version:
68 lines (61 loc) 1.72 kB
(function (global, factory) { if (typeof define === "function" && define.amd) { define(["exports", "./expr", "./util", "./over"], factory); } else if (typeof exports !== "undefined") { factory(exports, require("./expr"), require("./util"), require("./over")); } else { var mod = { exports: {} }; factory(mod.exports, global.expr, global.util, global.over); global.func = mod.exports; } })(typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : this, function (_exports, _expr, _util, _over) { "use strict"; Object.defineProperty(_exports, "__esModule", { value: true }); _exports.castToSQL = castToSQL; _exports.funcToSQL = funcToSQL; function castToSQL(expr) { const { target, expr: expression, symbol } = expr; const { length, dataType, parentheses, scale } = target; let str = ''; if (length) { str = scale ? `${length}, ${scale}` : length; } if (parentheses) str = `(${str})`; let prefix = (0, _expr.exprToSQL)(expression); let symbolChar = '::'; let suffix = ''; if (symbol === 'as') { prefix = `CAST(${prefix}`; suffix = ')'; symbolChar = ` ${symbol.toUpperCase()} `; } return `${prefix}${symbolChar}${dataType}${str}${suffix}`; } function funcToSQL(expr) { const { args, name } = expr; if (!args) return name; const { parentheses, over } = expr; const str = `${name}(${(0, _expr.exprToSQL)(args).join(', ')})`; const overStr = (0, _over.overToSQL)(over); return [parentheses ? `(${str})` : str, overStr].filter(_util.hasVal).join(' '); } });