@react-awesome-query-builder/core
Version:
User-friendly query builder for React. Core
72 lines (71 loc) • 2.78 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
export var mongoEmptyValue = function mongoEmptyValue(fieldDef) {
var v = "";
var type = fieldDef === null || fieldDef === void 0 ? void 0 : fieldDef.type;
if (type == "number") {
v = 0;
}
return v;
};
// helpers for mongo format
export var mongoFormatOp1 = function mongoFormatOp1(mop, mc, opNot, field, _op, value, not, useExpr, valueSrc, valueType, opDef, operatorOptions, fieldDef) {
var $field = typeof field == "string" && !field.startsWith("$") ? "$" + field : field;
var mv = mc(value, fieldDef);
if (mv === undefined) return undefined;
var neg = not ^ opNot;
if (useExpr && mop == "$nin") {
// There is only `$in` aggregation operator but not `$nin` (`$nin` is only a query operator)
// https://www.mongodb.com/docs/manual/reference/operator/aggregation/in/
neg = !neg;
mop = "$in";
}
if (useExpr && mop == "$regex") {
// https://stackoverflow.com/questions/35750920/regex-as-filter-in-projection
var e = {
"$regexFind": {
input: $field,
regex: mv
}
};
if (neg) {
e = {
"$not": e
};
}
return e;
}
if (neg) {
// if (!useExpr && (!mop || mop == "$eq"))
// return { [field]: { "$ne": mv } }; // short form
return !useExpr ? _defineProperty({}, field, {
"$not": _defineProperty({}, mop, mv)
}) : {
"$not": _defineProperty({}, mop, [$field, mv])
};
} else {
if (!useExpr && (!mop || mop == "$eq")) return _defineProperty({}, field, mv); // short form
return !useExpr ? _defineProperty({}, field, _defineProperty({}, mop, mv)) : _defineProperty({}, mop, [$field, mv]);
}
};
export var mongoFormatOp2 = function mongoFormatOp2(mops, opNot, field, _op, values, not, useExpr, valueSrcs, valueTypes, opDef, operatorOptions, fieldDef) {
var $field = typeof field == "string" && !field.startsWith("$") ? "$" + field : field;
if (not ^ opNot) {
return !useExpr ? _defineProperty({}, field, {
"$not": _defineProperty(_defineProperty({}, mops[0], values[0]), mops[1], values[1])
}) : {
"$not": {
"$and": [_defineProperty({}, mops[0], [$field, values[0]]), _defineProperty({}, mops[1], [$field, values[1]])]
}
};
} else {
return !useExpr ? _defineProperty({}, field, _defineProperty(_defineProperty({}, mops[0], values[0]), mops[1], values[1])) : {
"$and": [_defineProperty({}, mops[0], [$field, values[0]]), _defineProperty({}, mops[1], [$field, values[1]])]
};
}
};
export var mongoFieldEscape = function mongoFieldEscape(input) {
return input.replace(/\$/g, "\uFF04");
};
export var mongoFieldUnescape = function mongoFieldUnescape(input) {
return input.replace(/\uFF04/g, "$");
};