UNPKG

@react-awesome-query-builder/sql

Version:
74 lines (69 loc) 2.75 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.loadFromSql = void 0; var _core = require("@react-awesome-query-builder/core"); var _nodeSqlParser = require("node-sql-parser"); var _ast = require("./ast"); var _conv = require("./conv"); var _convert = require("./convert"); /* eslint-disable @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ var logger = _core.Utils.OtherUtils.logger; var loadFromSql = exports.loadFromSql = function loadFromSql(sqlStr, config, options) { var _options; var meta = { errors: [], // mutable warnings: [] // mutable }; var extendedConfig = _core.Utils.ConfigUtils.extendConfig(config, undefined, false); var conv = (0, _conv.buildConv)(extendedConfig, meta); var jsTree; var sqlAst; var convertedObj; // Normalize if (!options) { options = {}; } if (!((_options = options) !== null && _options !== void 0 && _options.database)) { // todo options.database = "Postgresql"; } if (!sqlStr.startsWith("SELECT ")) { sqlStr = "SELECT * FROM t WHERE " + sqlStr; } var sqlParser = new _nodeSqlParser.Parser(); try { sqlAst = sqlParser.astify(sqlStr, options); logger.debug("sqlAst:", sqlAst); } catch (exc) { var e = exc; meta.errors.push(e.message); } if (sqlAst) { var _convertedObj$where, _convertedObj, _convertedObj2; convertedObj = (0, _ast.processAst)(sqlAst, meta); logger.debug("convertedObj:", convertedObj, meta); meta.convertedObj = convertedObj; jsTree = (0, _convert.convertToTree)((_convertedObj$where = (_convertedObj = convertedObj) === null || _convertedObj === void 0 ? void 0 : _convertedObj.where) !== null && _convertedObj$where !== void 0 ? _convertedObj$where : (_convertedObj2 = convertedObj) === null || _convertedObj2 === void 0 ? void 0 : _convertedObj2.select, conv, extendedConfig, meta, undefined, true); logger.debug("jsTree:", jsTree); } var immTree = jsTree ? _core.Utils.Import.loadTree(jsTree) : undefined; return { tree: immTree, errors: meta.errors, warnings: meta.warnings }; }; // export const _loadFromSqlAndPrintErrors = (sqlStr: string, config: Config): ImmutableTree => { // const {tree, errors} = loadFromSql(sqlStr, config); // if (errors.length) // console.warn("Errors while importing from SQL:", errors); // return tree; // }; // todo: // funcs: LENGTH("sql"), LCASE(""), CONCAT("1", "2"), CONCAT_WS(",", "1", "2"), SUBSTRING("", 1, 1), SUBSTR(), ADDDATE/DATEADD // json funcs: JSON_VALUE(a, "$.info.address.town") // CASE mode: https://www.w3schools.com/sql/sql_case.asp //