UNPKG

@react-awesome-query-builder/sql

Version:
106 lines (105 loc) 4.24 kB
import _slicedToArray from "@babel/runtime/helpers/slicedToArray"; /* eslint-disable @typescript-eslint/no-redundant-type-constituents, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access */ import { Utils } from "@react-awesome-query-builder/core"; var logger = Utils.OtherUtils.logger; export var manuallyImportedOps = []; export var unsupportedOps = ["some", "all", "none"]; // sql type => raqb type export var SqlPrimitiveTypes = { single_quote_string: "text", double_quote_string: "text", backticks_quote_string: "text", var_string: "text", natural_string: "text", hex_string: "text", full_hex_string: "text", bit_string: "text", string: "text", regex_string: "text", // ? number: "number", "null": "null", bool: "boolean", "boolean": "boolean" }; export var buildConv = function buildConv(config, meta) { var operators = {}; var opFuncs = {}; var valueFuncs = { datetime: [sqlImportDate], date: [sqlImportDate], time: [sqlImportDate] }; var _loop = function _loop(opKey) { var opConfig = config.operators[opKey]; // const isGroupOp = config.settings.groupOperators?.includes(opKey); var sqlOps = opConfig.sqlOps ? opConfig.sqlOps : opConfig.sqlOp ? [opConfig.sqlOp] : undefined; if (opConfig.sqlImport) { if (!opFuncs[opKey]) opFuncs[opKey] = []; opFuncs[opKey].push(opConfig.sqlImport); } if (sqlOps) { // examples of 2+: "==", "eq", ".contains", "matches" (can be used for starts_with, ends_with) sqlOps === null || sqlOps === void 0 || sqlOps.forEach(function (sqlOp) { if (!operators[sqlOp]) operators[sqlOp] = []; operators[sqlOp].push(opKey); }); } else { var _config$operators; var revOpConfig = (_config$operators = config.operators) === null || _config$operators === void 0 ? void 0 : _config$operators[opConfig.reversedOp]; var canUseRev = (revOpConfig === null || revOpConfig === void 0 ? void 0 : revOpConfig.sqlOp) || (revOpConfig === null || revOpConfig === void 0 ? void 0 : revOpConfig.sqlOps) || (revOpConfig === null || revOpConfig === void 0 ? void 0 : revOpConfig.sqlImport); var canIgnore = canUseRev || opConfig.sqlImport || manuallyImportedOps.includes(opKey) || manuallyImportedOps.includes(opConfig.reversedOp) || unsupportedOps.includes(opKey); if (!canIgnore) { logger.warn("[sql] No sqlOp/sqlImport for operator ".concat(opKey)); } } }; for (var opKey in config.operators) { _loop(opKey); } var conjunctions = {}; for (var conjKey in config.conjunctions) { var conjunctionDefinition = config.conjunctions[conjKey]; var ck = conjunctionDefinition.sqlConj || conjKey.toLowerCase(); conjunctions[ck] = conjKey; } for (var w in config.widgets) { var widgetDef = config.widgets[w]; var sqlImport = widgetDef.sqlImport; if (sqlImport) { if (!valueFuncs[w]) valueFuncs[w] = []; valueFuncs[w].push(sqlImport); } } return { operators: operators, conjunctions: conjunctions, opFuncs: opFuncs, valueFuncs: valueFuncs }; }; var sqlImportDate = function sqlImportDate(sqlObj, wgtDef, sqlDialect) { if (sqlObj !== null && sqlObj !== void 0 && sqlObj.children && ["TO_DATE", "TO_TIMESTAMP", "TO_TIMESTAMP_TZ", "TO_UTC_TIMESTAMP_TZ"].includes(sqlObj.func) && sqlObj.children.length >= 1) { var _valArg$valueType; var _ref = sqlObj.children, _ref2 = _slicedToArray(_ref, 2), valArg = _ref2[0], _patternArg = _ref2[1]; if (valArg !== null && valArg !== void 0 && (_valArg$valueType = valArg.valueType) !== null && _valArg$valueType !== void 0 && _valArg$valueType.endsWith("_quote_string")) { var dateWidgetDef = wgtDef; // tip: moment doesn't support SQL date format, so ignore patternArg var dateVal = this.utils.moment(valArg.value); if (dateVal.isValid()) { return { value: dateVal.format(dateWidgetDef === null || dateWidgetDef === void 0 ? void 0 : dateWidgetDef.valueFormat) }; } else { return { value: null, error: "Invalid date" }; } } } return undefined; };