UNPKG

objection

Version:
78 lines (52 loc) 6.68 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = undefined; var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); var _normalizeIds = require('../../utils/normalizeIds'); var _normalizeIds2 = _interopRequireDefault(_normalizeIds); var _QueryBuilderOperation = require('../../queryBuilder/operations/QueryBuilderOperation'); var _QueryBuilderOperation2 = _interopRequireDefault(_QueryBuilderOperation); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var BelongsToOneRelateOperation = function (_QueryBuilderOperatio) { (0, _inherits3.default)(BelongsToOneRelateOperation, _QueryBuilderOperatio); function BelongsToOneRelateOperation(name, opt) { (0, _classCallCheck3.default)(this, BelongsToOneRelateOperation); var _this = (0, _possibleConstructorReturn3.default)(this, _QueryBuilderOperatio.call(this, name, opt)); _this.isWriteOperation = true; _this.relation = opt.relation; _this.owner = opt.owner; _this.input = null; _this.ids = null; return _this; } BelongsToOneRelateOperation.prototype.call = function call(builder, args) { this.input = args[0]; this.ids = (0, _normalizeIds2.default)(args[0], this.relation.relatedProp, { arrayOutput: true }); if (this.ids.length > 1) { this.relation.throwError('can only relate one model to a BelongsToOneRelation'); } return true; }; BelongsToOneRelateOperation.prototype.queryExecutor = function queryExecutor(builder) { var patch = {}; for (var i = 0, l = this.relation.ownerProp.length; i < l; ++i) { var prop = this.relation.ownerProp[i]; this.owner[prop] = this.ids[0][i]; patch[prop] = this.ids[0][i]; } return this.relation.ownerModelClass.query().childQueryOf(builder).copyFrom(builder, /where/i).patch(patch).whereComposite(this.relation.ownerModelClass.getFullIdColumn(), this.owner.$id()); }; BelongsToOneRelateOperation.prototype.onAfterInternal = function onAfterInternal(builder) { return this.input; }; return BelongsToOneRelateOperation; }(_QueryBuilderOperation2.default); exports.default = BelongsToOneRelateOperation; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJlbG9uZ3NUb09uZVJlbGF0ZU9wZXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJCZWxvbmdzVG9PbmVSZWxhdGVPcGVyYXRpb24iLCJuYW1lIiwib3B0IiwiaXNXcml0ZU9wZXJhdGlvbiIsInJlbGF0aW9uIiwib3duZXIiLCJpbnB1dCIsImlkcyIsImNhbGwiLCJidWlsZGVyIiwiYXJncyIsInJlbGF0ZWRQcm9wIiwiYXJyYXlPdXRwdXQiLCJsZW5ndGgiLCJ0aHJvd0Vycm9yIiwicXVlcnlFeGVjdXRvciIsInBhdGNoIiwiaSIsImwiLCJvd25lclByb3AiLCJwcm9wIiwib3duZXJNb2RlbENsYXNzIiwicXVlcnkiLCJjaGlsZFF1ZXJ5T2YiLCJjb3B5RnJvbSIsIndoZXJlQ29tcG9zaXRlIiwiZ2V0RnVsbElkQ29sdW1uIiwiJGlkIiwib25BZnRlckludGVybmFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7Ozs7O0lBRXFCQSwyQjs7O0FBRW5CLHVDQUFZQyxJQUFaLEVBQWtCQyxHQUFsQixFQUF1QjtBQUFBOztBQUFBLCtEQUNyQixpQ0FBTUQsSUFBTixFQUFZQyxHQUFaLENBRHFCOztBQUdyQixVQUFLQyxnQkFBTCxHQUF3QixJQUF4QjtBQUNBLFVBQUtDLFFBQUwsR0FBZ0JGLElBQUlFLFFBQXBCO0FBQ0EsVUFBS0MsS0FBTCxHQUFhSCxJQUFJRyxLQUFqQjtBQUNBLFVBQUtDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsVUFBS0MsR0FBTCxHQUFXLElBQVg7QUFQcUI7QUFRdEI7O3dDQUVEQyxJLGlCQUFLQyxPLEVBQVNDLEksRUFBTTtBQUNsQixTQUFLSixLQUFMLEdBQWFJLEtBQUssQ0FBTCxDQUFiO0FBQ0EsU0FBS0gsR0FBTCxHQUFXLDRCQUFhRyxLQUFLLENBQUwsQ0FBYixFQUFzQixLQUFLTixRQUFMLENBQWNPLFdBQXBDLEVBQWlELEVBQUNDLGFBQWEsSUFBZCxFQUFqRCxDQUFYOztBQUVBLFFBQUksS0FBS0wsR0FBTCxDQUFTTSxNQUFULEdBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCLFdBQUtULFFBQUwsQ0FBY1UsVUFBZCxDQUF5QixxREFBekI7QUFDRDs7QUFFRCxXQUFPLElBQVA7QUFDRCxHOzt3Q0FFREMsYSwwQkFBY04sTyxFQUFTO0FBQ3JCLFFBQUlPLFFBQVEsRUFBWjs7QUFFQSxTQUFLLElBQUlDLElBQUksQ0FBUixFQUFXQyxJQUFJLEtBQUtkLFFBQUwsQ0FBY2UsU0FBZCxDQUF3Qk4sTUFBNUMsRUFBb0RJLElBQUlDLENBQXhELEVBQTJELEVBQUVELENBQTdELEVBQWdFO0FBQzlELFVBQU1HLE9BQU8sS0FBS2hCLFFBQUwsQ0FBY2UsU0FBZCxDQUF3QkYsQ0FBeEIsQ0FBYjs7QUFFQSxXQUFLWixLQUFMLENBQVdlLElBQVgsSUFBbUIsS0FBS2IsR0FBTCxDQUFTLENBQVQsRUFBWVUsQ0FBWixDQUFuQjtBQUNBRCxZQUFNSSxJQUFOLElBQWMsS0FBS2IsR0FBTCxDQUFTLENBQVQsRUFBWVUsQ0FBWixDQUFkO0FBQ0Q7O0FBRUQsV0FBTyxLQUFLYixRQUFMLENBQWNpQixlQUFkLENBQ0pDLEtBREksR0FFSkMsWUFGSSxDQUVTZCxPQUZULEVBR0plLFFBSEksQ0FHS2YsT0FITCxFQUdjLFFBSGQsRUFJSk8sS0FKSSxDQUlFQSxLQUpGLEVBS0pTLGNBTEksQ0FLVyxLQUFLckIsUUFBTCxDQUFjaUIsZUFBZCxDQUE4QkssZUFBOUIsRUFMWCxFQUs0RCxLQUFLckIsS0FBTCxDQUFXc0IsR0FBWCxFQUw1RCxDQUFQO0FBTUQsRzs7d0NBRURDLGUsNEJBQWdCbkIsTyxFQUFTO0FBQ3ZCLFdBQU8sS0FBS0gsS0FBWjtBQUNELEc7Ozs7O2tCQTNDa0JOLDJCIiwiZmlsZSI6IkJlbG9uZ3NUb09uZVJlbGF0ZU9wZXJhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBub3JtYWxpemVJZHMgZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplSWRzJztcbmltcG9ydCBRdWVyeUJ1aWxkZXJPcGVyYXRpb24gZnJvbSAnLi4vLi4vcXVlcnlCdWlsZGVyL29wZXJhdGlvbnMvUXVlcnlCdWlsZGVyT3BlcmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmVsb25nc1RvT25lUmVsYXRlT3BlcmF0aW9uIGV4dGVuZHMgUXVlcnlCdWlsZGVyT3BlcmF0aW9uIHtcblxuICBjb25zdHJ1Y3RvcihuYW1lLCBvcHQpIHtcbiAgICBzdXBlcihuYW1lLCBvcHQpO1xuXG4gICAgdGhpcy5pc1dyaXRlT3BlcmF0aW9uID0gdHJ1ZTtcbiAgICB0aGlzLnJlbGF0aW9uID0gb3B0LnJlbGF0aW9uO1xuICAgIHRoaXMub3duZXIgPSBvcHQub3duZXI7XG4gICAgdGhpcy5pbnB1dCA9IG51bGw7XG4gICAgdGhpcy5pZHMgPSBudWxsO1xuICB9XG5cbiAgY2FsbChidWlsZGVyLCBhcmdzKSB7XG4gICAgdGhpcy5pbnB1dCA9IGFyZ3NbMF07XG4gICAgdGhpcy5pZHMgPSBub3JtYWxpemVJZHMoYXJnc1swXSwgdGhpcy5yZWxhdGlvbi5yZWxhdGVkUHJvcCwge2FycmF5T3V0cHV0OiB0cnVlfSk7XG5cbiAgICBpZiAodGhpcy5pZHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhpcy5yZWxhdGlvbi50aHJvd0Vycm9yKCdjYW4gb25seSByZWxhdGUgb25lIG1vZGVsIHRvIGEgQmVsb25nc1RvT25lUmVsYXRpb24nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHF1ZXJ5RXhlY3V0b3IoYnVpbGRlcikge1xuICAgIGxldCBwYXRjaCA9IHt9O1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aGlzLnJlbGF0aW9uLm93bmVyUHJvcC5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgIGNvbnN0IHByb3AgPSB0aGlzLnJlbGF0aW9uLm93bmVyUHJvcFtpXTtcblxuICAgICAgdGhpcy5vd25lcltwcm9wXSA9IHRoaXMuaWRzWzBdW2ldO1xuICAgICAgcGF0Y2hbcHJvcF0gPSB0aGlzLmlkc1swXVtpXTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZWxhdGlvbi5vd25lck1vZGVsQ2xhc3NcbiAgICAgIC5xdWVyeSgpXG4gICAgICAuY2hpbGRRdWVyeU9mKGJ1aWxkZXIpXG4gICAgICAuY29weUZyb20oYnVpbGRlciwgL3doZXJlL2kpXG4gICAgICAucGF0Y2gocGF0Y2gpXG4gICAgICAud2hlcmVDb21wb3NpdGUodGhpcy5yZWxhdGlvbi5vd25lck1vZGVsQ2xhc3MuZ2V0RnVsbElkQ29sdW1uKCksIHRoaXMub3duZXIuJGlkKCkpO1xuICB9XG5cbiAgb25BZnRlckludGVybmFsKGJ1aWxkZXIpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dDtcbiAgfVxufVxuIl19