@brozeph/mongoose-middleware
Version:
Middleware for mongoose that makes filtering, sorting, pagination and projection chainable and simple to apply
52 lines (41 loc) • 1.63 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _typeof2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/typeof"));
var _isArray = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/array/is-array"));
var _keys = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/keys"));
function mergeFilters(base, model) {
(0, _keys["default"])(model).forEach(function (key) {
if (!base[key]) {
// base[key] is not present
base[key] = model[key];
} else if ((0, _isArray["default"])(base[key])) {
// base[key] is an array
if ((0, _isArray["default"])(model[key])) {
base[key] = base[key].concat(model[key]);
} else {
base[key].push(model[key]);
}
} else if ((0, _isArray["default"])(model[key])) {
model[key].push(base[key]);
base[key] = model[key];
} else if ((0, _typeof2["default"])(base[key]) !== 'object') {
base[key] = [base[key], model[key]]; // turn into array
} else {
// base[key] is likely JSON
if ((0, _typeof2["default"])(model[key]) === 'object') {
base[key] = mergeFilters(base[key], model[key]);
} // if base[key] is an object, and model[key], ignore
}
});
return base;
}
var _default = {
mergeFilters: mergeFilters
};
exports["default"] = _default;
//# sourceMappingURL=utils.js.map
;