UNPKG

objection

Version:
42 lines (36 loc) 4.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.visitModels = visitModels; /** * @param {Array.<Model|Object>|Model|Object} models * @param {Constructor.<Model>} modelClass * @param {function(model, modelClass, parent, relation)} visitor */ function visitModels(models, modelClass, visitor) { doVisit(models, modelClass, null, null, visitor); } function doVisit(models, modelClass, parent, rel, visitor) { if (Array.isArray(models)) { visitMany(models, modelClass, parent, rel, visitor); } else if (models) { visitOne(models, modelClass, parent, rel, visitor); } } function visitMany(models, modelClass, parent, rel, visitor) { for (var i = 0, l = models.length; i < l; ++i) { visitOne(models[i], modelClass, parent, rel, visitor); } } function visitOne(model, modelClass, parent, rel, visitor) { if (model) { visitor(model, modelClass, parent, rel); } var relations = modelClass.getRelationArray(); for (var i = 0, l = relations.length; i < l; ++i) { var relation = relations[i]; doVisit(model[relation.name], relation.relatedModelClass, model, relation, visitor); } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm1vZGVsVmlzaXRvci5qcyJdLCJuYW1lcyI6WyJ2aXNpdE1vZGVscyIsIm1vZGVscyIsIm1vZGVsQ2xhc3MiLCJ2aXNpdG9yIiwiZG9WaXNpdCIsInBhcmVudCIsInJlbCIsIkFycmF5IiwiaXNBcnJheSIsInZpc2l0TWFueSIsInZpc2l0T25lIiwiaSIsImwiLCJsZW5ndGgiLCJtb2RlbCIsInJlbGF0aW9ucyIsImdldFJlbGF0aW9uQXJyYXkiLCJyZWxhdGlvbiIsIm5hbWUiLCJyZWxhdGVkTW9kZWxDbGFzcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFLZ0JBLFcsR0FBQUEsVztBQUxoQjs7Ozs7QUFLTyxTQUFTQSxXQUFULENBQXFCQyxNQUFyQixFQUE2QkMsVUFBN0IsRUFBeUNDLE9BQXpDLEVBQWtEO0FBQ3ZEQyxVQUFRSCxNQUFSLEVBQWdCQyxVQUFoQixFQUE0QixJQUE1QixFQUFrQyxJQUFsQyxFQUF3Q0MsT0FBeEM7QUFDRDs7QUFFRCxTQUFTQyxPQUFULENBQWlCSCxNQUFqQixFQUF5QkMsVUFBekIsRUFBcUNHLE1BQXJDLEVBQTZDQyxHQUE3QyxFQUFrREgsT0FBbEQsRUFBMkQ7QUFDekQsTUFBSUksTUFBTUMsT0FBTixDQUFjUCxNQUFkLENBQUosRUFBMkI7QUFDekJRLGNBQVVSLE1BQVYsRUFBa0JDLFVBQWxCLEVBQThCRyxNQUE5QixFQUFzQ0MsR0FBdEMsRUFBMkNILE9BQTNDO0FBQ0QsR0FGRCxNQUVPLElBQUlGLE1BQUosRUFBWTtBQUNqQlMsYUFBU1QsTUFBVCxFQUFpQkMsVUFBakIsRUFBNkJHLE1BQTdCLEVBQXFDQyxHQUFyQyxFQUEwQ0gsT0FBMUM7QUFDRDtBQUNGOztBQUVELFNBQVNNLFNBQVQsQ0FBbUJSLE1BQW5CLEVBQTJCQyxVQUEzQixFQUF1Q0csTUFBdkMsRUFBK0NDLEdBQS9DLEVBQW9ESCxPQUFwRCxFQUE2RDtBQUMzRCxPQUFLLElBQUlRLElBQUksQ0FBUixFQUFXQyxJQUFJWCxPQUFPWSxNQUEzQixFQUFtQ0YsSUFBSUMsQ0FBdkMsRUFBMEMsRUFBRUQsQ0FBNUMsRUFBK0M7QUFDN0NELGFBQVNULE9BQU9VLENBQVAsQ0FBVCxFQUFvQlQsVUFBcEIsRUFBZ0NHLE1BQWhDLEVBQXdDQyxHQUF4QyxFQUE2Q0gsT0FBN0M7QUFDRDtBQUNGOztBQUVELFNBQVNPLFFBQVQsQ0FBa0JJLEtBQWxCLEVBQXlCWixVQUF6QixFQUFxQ0csTUFBckMsRUFBNkNDLEdBQTdDLEVBQWtESCxPQUFsRCxFQUEyRDtBQUN6RCxNQUFJVyxLQUFKLEVBQVc7QUFDVFgsWUFBUVcsS0FBUixFQUFlWixVQUFmLEVBQTJCRyxNQUEzQixFQUFtQ0MsR0FBbkM7QUFDRDs7QUFFRCxNQUFNUyxZQUFZYixXQUFXYyxnQkFBWCxFQUFsQjs7QUFFQSxPQUFLLElBQUlMLElBQUksQ0FBUixFQUFXQyxJQUFJRyxVQUFVRixNQUE5QixFQUFzQ0YsSUFBSUMsQ0FBMUMsRUFBNkMsRUFBRUQsQ0FBL0MsRUFBa0Q7QUFDaEQsUUFBTU0sV0FBV0YsVUFBVUosQ0FBVixDQUFqQjtBQUNBUCxZQUFRVSxNQUFNRyxTQUFTQyxJQUFmLENBQVIsRUFBOEJELFNBQVNFLGlCQUF2QyxFQUEwREwsS0FBMUQsRUFBaUVHLFFBQWpFLEVBQTJFZCxPQUEzRTtBQUNEO0FBQ0YiLCJmaWxlIjoibW9kZWxWaXNpdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcGFyYW0ge0FycmF5LjxNb2RlbHxPYmplY3Q+fE1vZGVsfE9iamVjdH0gbW9kZWxzXG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yLjxNb2RlbD59IG1vZGVsQ2xhc3NcbiAqIEBwYXJhbSB7ZnVuY3Rpb24obW9kZWwsIG1vZGVsQ2xhc3MsIHBhcmVudCwgcmVsYXRpb24pfSB2aXNpdG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2aXNpdE1vZGVscyhtb2RlbHMsIG1vZGVsQ2xhc3MsIHZpc2l0b3IpIHtcbiAgZG9WaXNpdChtb2RlbHMsIG1vZGVsQ2xhc3MsIG51bGwsIG51bGwsIHZpc2l0b3IpO1xufVxuXG5mdW5jdGlvbiBkb1Zpc2l0KG1vZGVscywgbW9kZWxDbGFzcywgcGFyZW50LCByZWwsIHZpc2l0b3IpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWxzKSkge1xuICAgIHZpc2l0TWFueShtb2RlbHMsIG1vZGVsQ2xhc3MsIHBhcmVudCwgcmVsLCB2aXNpdG9yKTtcbiAgfSBlbHNlIGlmIChtb2RlbHMpIHtcbiAgICB2aXNpdE9uZShtb2RlbHMsIG1vZGVsQ2xhc3MsIHBhcmVudCwgcmVsLCB2aXNpdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2aXNpdE1hbnkobW9kZWxzLCBtb2RlbENsYXNzLCBwYXJlbnQsIHJlbCwgdmlzaXRvcikge1xuICBmb3IgKGxldCBpID0gMCwgbCA9IG1vZGVscy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICB2aXNpdE9uZShtb2RlbHNbaV0sIG1vZGVsQ2xhc3MsIHBhcmVudCwgcmVsLCB2aXNpdG9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiB2aXNpdE9uZShtb2RlbCwgbW9kZWxDbGFzcywgcGFyZW50LCByZWwsIHZpc2l0b3IpIHtcbiAgaWYgKG1vZGVsKSB7XG4gICAgdmlzaXRvcihtb2RlbCwgbW9kZWxDbGFzcywgcGFyZW50LCByZWwpO1xuICB9XG5cbiAgY29uc3QgcmVsYXRpb25zID0gbW9kZWxDbGFzcy5nZXRSZWxhdGlvbkFycmF5KCk7XG5cbiAgZm9yIChsZXQgaSA9IDAsIGwgPSByZWxhdGlvbnMubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgY29uc3QgcmVsYXRpb24gPSByZWxhdGlvbnNbaV07XG4gICAgZG9WaXNpdChtb2RlbFtyZWxhdGlvbi5uYW1lXSwgcmVsYXRpb24ucmVsYXRlZE1vZGVsQ2xhc3MsIG1vZGVsLCByZWxhdGlvbiwgdmlzaXRvcik7XG4gIH1cbn0iXX0=