objection
Version:
An SQL-friendly ORM for Node.js
92 lines (63 loc) • 7.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _DelegateOperation2 = require('./DelegateOperation');
var _DelegateOperation3 = _interopRequireDefault(_DelegateOperation2);
var _UpdateOperation = require('./UpdateOperation');
var _UpdateOperation2 = _interopRequireDefault(_UpdateOperation);
var _promiseUtils = require('../../utils/promiseUtils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var UpdateAndFetchOperation = function (_DelegateOperation) {
(0, _inherits3.default)(UpdateAndFetchOperation, _DelegateOperation);
function UpdateAndFetchOperation(name, opt) {
(0, _classCallCheck3.default)(this, UpdateAndFetchOperation);
var _this = (0, _possibleConstructorReturn3.default)(this, _DelegateOperation.call(this, name, opt));
if (!_this.delegate.is(_UpdateOperation2.default)) {
throw new Error('Invalid delegate');
}
_this.id = null;
return _this;
}
UpdateAndFetchOperation.prototype.call = function call(builder, args) {
this.id = args[0];
return this.delegate.call(builder, args.slice(1));
};
UpdateAndFetchOperation.prototype.onBeforeBuild = function onBeforeBuild(builder) {
_DelegateOperation.prototype.onBeforeBuild.call(this, builder);
builder.whereComposite(builder.modelClass().getFullIdColumn(), this.id);
};
UpdateAndFetchOperation.prototype.onAfterInternal = function onAfterInternal(builder, numUpdated) {
var _this2 = this;
if (numUpdated == 0) {
// If nothing was updated, we should fetch nothing.
return (0, _promiseUtils.afterReturn)(_DelegateOperation.prototype.onAfterInternal.call(this, builder, numUpdated), undefined);
}
return builder.modelClass().query().childQueryOf(builder).whereComposite(builder.modelClass().getFullIdColumn(), this.id).first().then(function (fetched) {
var retVal = null;
if (fetched) {
_this2.model.$set(fetched);
retVal = _this2.model;
}
return (0, _promiseUtils.afterReturn)(_DelegateOperation.prototype.onAfterInternal.call(_this2, builder, numUpdated), retVal);
});
};
(0, _createClass3.default)(UpdateAndFetchOperation, [{
key: 'model',
get: function get() {
return this.delegate.model;
}
}]);
return UpdateAndFetchOperation;
}(_DelegateOperation3.default);
exports.default = UpdateAndFetchOperation;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlVwZGF0ZUFuZEZldGNoT3BlcmF0aW9uLmpzIl0sIm5hbWVzIjpbIlVwZGF0ZUFuZEZldGNoT3BlcmF0aW9uIiwibmFtZSIsIm9wdCIsImRlbGVnYXRlIiwiaXMiLCJFcnJvciIsImlkIiwiY2FsbCIsImJ1aWxkZXIiLCJhcmdzIiwic2xpY2UiLCJvbkJlZm9yZUJ1aWxkIiwid2hlcmVDb21wb3NpdGUiLCJtb2RlbENsYXNzIiwiZ2V0RnVsbElkQ29sdW1uIiwib25BZnRlckludGVybmFsIiwibnVtVXBkYXRlZCIsInVuZGVmaW5lZCIsInF1ZXJ5IiwiY2hpbGRRdWVyeU9mIiwiZmlyc3QiLCJ0aGVuIiwicmV0VmFsIiwiZmV0Y2hlZCIsIm1vZGVsIiwiJHNldCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7SUFFcUJBLHVCOzs7QUFFbkIsbUNBQVlDLElBQVosRUFBa0JDLEdBQWxCLEVBQXVCO0FBQUE7O0FBQUEsK0RBQ3JCLDhCQUFNRCxJQUFOLEVBQVlDLEdBQVosQ0FEcUI7O0FBR3JCLFFBQUksQ0FBQyxNQUFLQyxRQUFMLENBQWNDLEVBQWQsMkJBQUwsRUFBd0M7QUFDdEMsWUFBTSxJQUFJQyxLQUFKLENBQVUsa0JBQVYsQ0FBTjtBQUNEOztBQUVELFVBQUtDLEVBQUwsR0FBVSxJQUFWO0FBUHFCO0FBUXRCOztvQ0FNREMsSSxpQkFBS0MsTyxFQUFTQyxJLEVBQU07QUFDbEIsU0FBS0gsRUFBTCxHQUFVRyxLQUFLLENBQUwsQ0FBVjtBQUNBLFdBQU8sS0FBS04sUUFBTCxDQUFjSSxJQUFkLENBQW1CQyxPQUFuQixFQUE0QkMsS0FBS0MsS0FBTCxDQUFXLENBQVgsQ0FBNUIsQ0FBUDtBQUNELEc7O29DQUVEQyxhLDBCQUFjSCxPLEVBQVM7QUFDckIsaUNBQU1HLGFBQU4sWUFBb0JILE9BQXBCO0FBQ0FBLFlBQVFJLGNBQVIsQ0FBdUJKLFFBQVFLLFVBQVIsR0FBcUJDLGVBQXJCLEVBQXZCLEVBQStELEtBQUtSLEVBQXBFO0FBQ0QsRzs7b0NBRURTLGUsNEJBQWdCUCxPLEVBQVNRLFUsRUFBWTtBQUFBOztBQUNuQyxRQUFJQSxjQUFjLENBQWxCLEVBQXFCO0FBQ25CO0FBQ0EsYUFBTywrQkFBWSw2QkFBTUQsZUFBTixZQUFzQlAsT0FBdEIsRUFBK0JRLFVBQS9CLENBQVosRUFBd0RDLFNBQXhELENBQVA7QUFDRDs7QUFFRCxXQUFPVCxRQUFRSyxVQUFSLEdBQ0pLLEtBREksR0FFSkMsWUFGSSxDQUVTWCxPQUZULEVBR0pJLGNBSEksQ0FHV0osUUFBUUssVUFBUixHQUFxQkMsZUFBckIsRUFIWCxFQUdtRCxLQUFLUixFQUh4RCxFQUlKYyxLQUpJLEdBS0pDLElBTEksQ0FLQyxtQkFBVztBQUNmLFVBQUlDLFNBQVMsSUFBYjs7QUFFQSxVQUFJQyxPQUFKLEVBQWE7QUFDWCxlQUFLQyxLQUFMLENBQVdDLElBQVgsQ0FBZ0JGLE9BQWhCO0FBQ0FELGlCQUFTLE9BQUtFLEtBQWQ7QUFDRDs7QUFFRCxhQUFPLCtCQUFZLDZCQUFNVCxlQUFOLGNBQXNCUCxPQUF0QixFQUErQlEsVUFBL0IsQ0FBWixFQUF3RE0sTUFBeEQsQ0FBUDtBQUNELEtBZEksQ0FBUDtBQWVELEc7Ozs7d0JBbkNXO0FBQ1YsYUFBTyxLQUFLbkIsUUFBTCxDQUFjcUIsS0FBckI7QUFDRDs7Ozs7a0JBZGtCeEIsdUIiLCJmaWxlIjoiVXBkYXRlQW5kRmV0Y2hPcGVyYXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVsZWdhdGVPcGVyYXRpb24gZnJvbSAnLi9EZWxlZ2F0ZU9wZXJhdGlvbic7XG5pbXBvcnQgVXBkYXRlT3BlcmF0aW9uIGZyb20gJy4vVXBkYXRlT3BlcmF0aW9uJztcbmltcG9ydCB7YWZ0ZXJSZXR1cm59IGZyb20gJy4uLy4uL3V0aWxzL3Byb21pc2VVdGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVwZGF0ZUFuZEZldGNoT3BlcmF0aW9uIGV4dGVuZHMgRGVsZWdhdGVPcGVyYXRpb24ge1xuXG4gIGNvbnN0cnVjdG9yKG5hbWUsIG9wdCkge1xuICAgIHN1cGVyKG5hbWUsIG9wdCk7XG5cbiAgICBpZiAoIXRoaXMuZGVsZWdhdGUuaXMoVXBkYXRlT3BlcmF0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGRlbGVnYXRlJyk7XG4gICAgfVxuXG4gICAgdGhpcy5pZCA9IG51bGw7XG4gIH1cblxuICBnZXQgbW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGVsZWdhdGUubW9kZWw7XG4gIH1cblxuICBjYWxsKGJ1aWxkZXIsIGFyZ3MpIHtcbiAgICB0aGlzLmlkID0gYXJnc1swXTtcbiAgICByZXR1cm4gdGhpcy5kZWxlZ2F0ZS5jYWxsKGJ1aWxkZXIsIGFyZ3Muc2xpY2UoMSkpO1xuICB9XG5cbiAgb25CZWZvcmVCdWlsZChidWlsZGVyKSB7XG4gICAgc3VwZXIub25CZWZvcmVCdWlsZChidWlsZGVyKTtcbiAgICBidWlsZGVyLndoZXJlQ29tcG9zaXRlKGJ1aWxkZXIubW9kZWxDbGFzcygpLmdldEZ1bGxJZENvbHVtbigpLCB0aGlzLmlkKTtcbiAgfVxuXG4gIG9uQWZ0ZXJJbnRlcm5hbChidWlsZGVyLCBudW1VcGRhdGVkKSB7XG4gICAgaWYgKG51bVVwZGF0ZWQgPT0gMCkge1xuICAgICAgLy8gSWYgbm90aGluZyB3YXMgdXBkYXRlZCwgd2Ugc2hvdWxkIGZldGNoIG5vdGhpbmcuXG4gICAgICByZXR1cm4gYWZ0ZXJSZXR1cm4oc3VwZXIub25BZnRlckludGVybmFsKGJ1aWxkZXIsIG51bVVwZGF0ZWQpLCB1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHJldHVybiBidWlsZGVyLm1vZGVsQ2xhc3MoKVxuICAgICAgLnF1ZXJ5KClcbiAgICAgIC5jaGlsZFF1ZXJ5T2YoYnVpbGRlcilcbiAgICAgIC53aGVyZUNvbXBvc2l0ZShidWlsZGVyLm1vZGVsQ2xhc3MoKS5nZXRGdWxsSWRDb2x1bW4oKSwgdGhpcy5pZClcbiAgICAgIC5maXJzdCgpXG4gICAgICAudGhlbihmZXRjaGVkID0+IHtcbiAgICAgICAgbGV0IHJldFZhbCA9IG51bGw7XG5cbiAgICAgICAgaWYgKGZldGNoZWQpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLiRzZXQoZmV0Y2hlZCk7XG4gICAgICAgICAgcmV0VmFsID0gdGhpcy5tb2RlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhZnRlclJldHVybihzdXBlci5vbkFmdGVySW50ZXJuYWwoYnVpbGRlciwgbnVtVXBkYXRlZCksIHJldFZhbCk7XG4gICAgICB9KTtcbiAgfVxufVxuIl19