@react-awesome-query-builder/core
Version:
User-friendly query builder for React. Core
113 lines (111 loc) • 3.74 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.SqlString = void 0;
Object.defineProperty(exports, "mongoEmptyValue", {
enumerable: true,
get: function get() {
return _mongoUtils.mongoEmptyValue;
}
});
Object.defineProperty(exports, "spelEscape", {
enumerable: true,
get: function get() {
return _spelUtils.spelEscape;
}
});
Object.defineProperty(exports, "spelFixList", {
enumerable: true,
get: function get() {
return _spelUtils.spelFixList;
}
});
Object.defineProperty(exports, "spelFormatConcat", {
enumerable: true,
get: function get() {
return _spelUtils.spelFormatConcat;
}
});
Object.defineProperty(exports, "spelImportConcat", {
enumerable: true,
get: function get() {
return _spelUtils.spelImportConcat;
}
});
exports.wrapWithBrackets = exports.stringifyForDisplay = exports.sqlEmptyValue = void 0;
var _sqlstring = _interopRequireDefault(require("sqlstring"));
var _mongoUtils = require("./mongoUtils");
var _spelUtils = require("./spelUtils");
// @deprecated Use dedicated utils instead
// todo: move to sqlUtils
var SqlString = exports.SqlString = _sqlstring["default"];
SqlString.trim = function (val) {
if ((val === null || val === void 0 ? void 0 : val.charAt(0)) == "'") return val.substring(1, val.length - 1);else return val;
};
SqlString.unescapeLike = function (val) {
var sqlDialect = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
if (typeof val !== "string") {
return val;
}
var res = val;
// unescape % and _
if (sqlDialect === "BigQuery") {
// https://cloud.google.com/bigquery/docs/reference/standard-sql/operators#like_operator
res = res.replace(/\\\\([%_])/g, "$1");
} else {
res = res.replace(/\\([%_])/g, "$1");
}
return res;
};
SqlString.escapeLike = function (val) {
var any_start = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
var any_end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var sqlDialect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;
if (typeof val !== "string") {
return val;
}
// normal escape
var res = SqlString.escape(val);
// unwrap ''
res = SqlString.trim(res);
// escape % and _
if (sqlDialect === "BigQuery") {
// https://cloud.google.com/bigquery/docs/reference/standard-sql/operators#like_operator
res = res.replace(/[%_\\]/g, "\\\\$&");
} else {
res = res.replace(/[%_]/g, "\\$&");
}
// wrap with % for LIKE
res = (any_start ? "%" : "") + res + (any_end ? "%" : "");
// wrap ''
res = "'" + res + "'";
return res;
};
var sqlEmptyValue = exports.sqlEmptyValue = function sqlEmptyValue(fieldDef) {
var v = "''";
var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type;
if (type == "date") {
//todo: support other SQL dialects? 0001-01-01 for oracle, 1970-01-01 for timestamp
v = "'0000-00-00'";
} else if (type == "datetime") {
v = "'0000-00-00 00:00'";
} else if (type == "time") {
v = "'00:00'";
} else if (type == "number") {
v = "0";
}
return v;
};
var stringifyForDisplay = exports.stringifyForDisplay = function stringifyForDisplay(v) {
return v == null ? "NULL" : v.toString();
};
var wrapWithBrackets = exports.wrapWithBrackets = function wrapWithBrackets(v) {
if (v == undefined) return v;
if ((v === null || v === void 0 ? void 0 : v[0]) === "(" && (v === null || v === void 0 ? void 0 : v[(v === null || v === void 0 ? void 0 : v.length) - 1]) === ")") {
// already wrapped
return v;
}
return "(" + v + ")";
};