objection
Version:
An SQL-friendly ORM for Node.js
54 lines (34 loc) • 5.32 kB
JavaScript
;
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 _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _QueryBuilderOperation = require('../../queryBuilder/operations/QueryBuilderOperation');
var _QueryBuilderOperation2 = _interopRequireDefault(_QueryBuilderOperation);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var ManyToManyUnrelateOperation = function (_QueryBuilderOperatio) {
(0, _inherits3.default)(ManyToManyUnrelateOperation, _QueryBuilderOperatio);
function ManyToManyUnrelateOperation(name, opt) {
(0, _classCallCheck3.default)(this, ManyToManyUnrelateOperation);
var _this = (0, _possibleConstructorReturn3.default)(this, _QueryBuilderOperatio.call(this, name, opt));
_this.isWriteOperation = true;
_this.relation = opt.relation;
_this.owner = opt.owner;
return _this;
}
ManyToManyUnrelateOperation.prototype.queryExecutor = function queryExecutor(builder) {
var selectRelatedColQuery = this.relation.relatedModelClass.query().childQueryOf(builder).copyFrom(builder, /where/i).select(this.relation.fullRelatedCol()).modify(this.relation.modify);
return this.relation.joinTableModelClass(builder.knex()).query().childQueryOf(builder).delete().whereComposite(this.relation.fullJoinTableOwnerCol(), this.owner.$values(this.relation.ownerProp)).whereInComposite(this.relation.fullJoinTableRelatedCol(), selectRelatedColQuery).runAfter(_lodash2.default.constant({}));
};
return ManyToManyUnrelateOperation;
}(_QueryBuilderOperation2.default);
exports.default = ManyToManyUnrelateOperation;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbnlUb01hbnlVbnJlbGF0ZU9wZXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJNYW55VG9NYW55VW5yZWxhdGVPcGVyYXRpb24iLCJuYW1lIiwib3B0IiwiaXNXcml0ZU9wZXJhdGlvbiIsInJlbGF0aW9uIiwib3duZXIiLCJxdWVyeUV4ZWN1dG9yIiwiYnVpbGRlciIsInNlbGVjdFJlbGF0ZWRDb2xRdWVyeSIsInJlbGF0ZWRNb2RlbENsYXNzIiwicXVlcnkiLCJjaGlsZFF1ZXJ5T2YiLCJjb3B5RnJvbSIsInNlbGVjdCIsImZ1bGxSZWxhdGVkQ29sIiwibW9kaWZ5Iiwiam9pblRhYmxlTW9kZWxDbGFzcyIsImtuZXgiLCJkZWxldGUiLCJ3aGVyZUNvbXBvc2l0ZSIsImZ1bGxKb2luVGFibGVPd25lckNvbCIsIiR2YWx1ZXMiLCJvd25lclByb3AiLCJ3aGVyZUluQ29tcG9zaXRlIiwiZnVsbEpvaW5UYWJsZVJlbGF0ZWRDb2wiLCJydW5BZnRlciIsImNvbnN0YW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7Ozs7O0lBRXFCQSwyQjs7O0FBRW5CLHVDQUFZQyxJQUFaLEVBQWtCQyxHQUFsQixFQUF1QjtBQUFBOztBQUFBLCtEQUNyQixpQ0FBTUQsSUFBTixFQUFZQyxHQUFaLENBRHFCOztBQUdyQixVQUFLQyxnQkFBTCxHQUF3QixJQUF4QjtBQUNBLFVBQUtDLFFBQUwsR0FBZ0JGLElBQUlFLFFBQXBCO0FBQ0EsVUFBS0MsS0FBTCxHQUFhSCxJQUFJRyxLQUFqQjtBQUxxQjtBQU10Qjs7d0NBRURDLGEsMEJBQWNDLE8sRUFBUztBQUNyQixRQUFJQyx3QkFBd0IsS0FBS0osUUFBTCxDQUFjSyxpQkFBZCxDQUN6QkMsS0FEeUIsR0FFekJDLFlBRnlCLENBRVpKLE9BRlksRUFHekJLLFFBSHlCLENBR2hCTCxPQUhnQixFQUdQLFFBSE8sRUFJekJNLE1BSnlCLENBSWxCLEtBQUtULFFBQUwsQ0FBY1UsY0FBZCxFQUprQixFQUt6QkMsTUFMeUIsQ0FLbEIsS0FBS1gsUUFBTCxDQUFjVyxNQUxJLENBQTVCOztBQU9BLFdBQU8sS0FBS1gsUUFBTCxDQUFjWSxtQkFBZCxDQUFrQ1QsUUFBUVUsSUFBUixFQUFsQyxFQUNKUCxLQURJLEdBRUpDLFlBRkksQ0FFU0osT0FGVCxFQUdKVyxNQUhJLEdBSUpDLGNBSkksQ0FJVyxLQUFLZixRQUFMLENBQWNnQixxQkFBZCxFQUpYLEVBSWtELEtBQUtmLEtBQUwsQ0FBV2dCLE9BQVgsQ0FBbUIsS0FBS2pCLFFBQUwsQ0FBY2tCLFNBQWpDLENBSmxELEVBS0pDLGdCQUxJLENBS2EsS0FBS25CLFFBQUwsQ0FBY29CLHVCQUFkLEVBTGIsRUFLc0RoQixxQkFMdEQsRUFNSmlCLFFBTkksQ0FNSyxpQkFBRUMsUUFBRixDQUFXLEVBQVgsQ0FOTCxDQUFQO0FBT0QsRzs7Ozs7a0JBekJrQjFCLDJCIiwiZmlsZSI6Ik1hbnlUb01hbnlVbnJlbGF0ZU9wZXJhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgUXVlcnlCdWlsZGVyT3BlcmF0aW9uIGZyb20gJy4uLy4uL3F1ZXJ5QnVpbGRlci9vcGVyYXRpb25zL1F1ZXJ5QnVpbGRlck9wZXJhdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hbnlUb01hbnlVbnJlbGF0ZU9wZXJhdGlvbiBleHRlbmRzIFF1ZXJ5QnVpbGRlck9wZXJhdGlvbiB7XG5cbiAgY29uc3RydWN0b3IobmFtZSwgb3B0KSB7XG4gICAgc3VwZXIobmFtZSwgb3B0KTtcblxuICAgIHRoaXMuaXNXcml0ZU9wZXJhdGlvbiA9IHRydWU7XG4gICAgdGhpcy5yZWxhdGlvbiA9IG9wdC5yZWxhdGlvbjtcbiAgICB0aGlzLm93bmVyID0gb3B0Lm93bmVyO1xuICB9XG5cbiAgcXVlcnlFeGVjdXRvcihidWlsZGVyKSB7XG4gICAgbGV0IHNlbGVjdFJlbGF0ZWRDb2xRdWVyeSA9IHRoaXMucmVsYXRpb24ucmVsYXRlZE1vZGVsQ2xhc3NcbiAgICAgIC5xdWVyeSgpXG4gICAgICAuY2hpbGRRdWVyeU9mKGJ1aWxkZXIpXG4gICAgICAuY29weUZyb20oYnVpbGRlciwgL3doZXJlL2kpXG4gICAgICAuc2VsZWN0KHRoaXMucmVsYXRpb24uZnVsbFJlbGF0ZWRDb2woKSlcbiAgICAgIC5tb2RpZnkodGhpcy5yZWxhdGlvbi5tb2RpZnkpO1xuXG4gICAgcmV0dXJuIHRoaXMucmVsYXRpb24uam9pblRhYmxlTW9kZWxDbGFzcyhidWlsZGVyLmtuZXgoKSlcbiAgICAgIC5xdWVyeSgpXG4gICAgICAuY2hpbGRRdWVyeU9mKGJ1aWxkZXIpXG4gICAgICAuZGVsZXRlKClcbiAgICAgIC53aGVyZUNvbXBvc2l0ZSh0aGlzLnJlbGF0aW9uLmZ1bGxKb2luVGFibGVPd25lckNvbCgpLCB0aGlzLm93bmVyLiR2YWx1ZXModGhpcy5yZWxhdGlvbi5vd25lclByb3ApKVxuICAgICAgLndoZXJlSW5Db21wb3NpdGUodGhpcy5yZWxhdGlvbi5mdWxsSm9pblRhYmxlUmVsYXRlZENvbCgpLCBzZWxlY3RSZWxhdGVkQ29sUXVlcnkpXG4gICAgICAucnVuQWZ0ZXIoXy5jb25zdGFudCh7fSkpO1xuICB9XG59XG4iXX0=