UNPKG

objection

Version:
72 lines (47 loc) 7.84 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 _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 sqliteBuiltInRowId = '_rowid_'; var ManyToManyUnrelateSqliteOperation = function (_QueryBuilderOperatio) { (0, _inherits3.default)(ManyToManyUnrelateSqliteOperation, _QueryBuilderOperatio); function ManyToManyUnrelateSqliteOperation(name, opt) { (0, _classCallCheck3.default)(this, ManyToManyUnrelateSqliteOperation); var _this = (0, _possibleConstructorReturn3.default)(this, _QueryBuilderOperatio.call(this, name, opt)); _this.isWriteOperation = true; _this.relation = opt.relation; _this.owner = opt.owner; return _this; } ManyToManyUnrelateSqliteOperation.prototype.queryExecutor = function queryExecutor(builder) { var _this2 = this; var joinTableAlias = this.relation.joinTableAlias(); var joinTableAsAlias = this.relation.joinTable + ' as ' + joinTableAlias; var joinTableAliasRowId = joinTableAlias + '.' + sqliteBuiltInRowId; var joinTableRowId = this.relation.joinTable + '.' + sqliteBuiltInRowId; var ownerId = this.owner.$values(this.relation.ownerProp); var fullRelatedCol = this.relation.fullRelatedCol(); var selectRelatedQuery = this.relation.relatedModelClass.query().childQueryOf(builder).copyFrom(builder, /where/i).select(joinTableAliasRowId).modify(this.relation.modify).whereComposite(this.relation.fullJoinTableOwnerCol(), ownerId).join(joinTableAsAlias, function (join) { var fullJoinTableRelatedCol = _this2.relation.fullJoinTableRelatedCol(); for (var i = 0, l = fullJoinTableRelatedCol.length; i < l; ++i) { join.on(fullJoinTableRelatedCol[i], fullRelatedCol[i]); } }); return this.relation.joinTableModelClass(builder.knex()).query().childQueryOf(builder).delete().whereIn(joinTableRowId, selectRelatedQuery).runAfter(_lodash2.default.constant({})); }; return ManyToManyUnrelateSqliteOperation; }(_QueryBuilderOperation2.default); exports.default = ManyToManyUnrelateSqliteOperation; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1hbnlUb01hbnlVbnJlbGF0ZVNxbGl0ZU9wZXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJzcWxpdGVCdWlsdEluUm93SWQiLCJNYW55VG9NYW55VW5yZWxhdGVTcWxpdGVPcGVyYXRpb24iLCJuYW1lIiwib3B0IiwiaXNXcml0ZU9wZXJhdGlvbiIsInJlbGF0aW9uIiwib3duZXIiLCJxdWVyeUV4ZWN1dG9yIiwiYnVpbGRlciIsImpvaW5UYWJsZUFsaWFzIiwiam9pblRhYmxlQXNBbGlhcyIsImpvaW5UYWJsZSIsImpvaW5UYWJsZUFsaWFzUm93SWQiLCJqb2luVGFibGVSb3dJZCIsIm93bmVySWQiLCIkdmFsdWVzIiwib3duZXJQcm9wIiwiZnVsbFJlbGF0ZWRDb2wiLCJzZWxlY3RSZWxhdGVkUXVlcnkiLCJyZWxhdGVkTW9kZWxDbGFzcyIsInF1ZXJ5IiwiY2hpbGRRdWVyeU9mIiwiY29weUZyb20iLCJzZWxlY3QiLCJtb2RpZnkiLCJ3aGVyZUNvbXBvc2l0ZSIsImZ1bGxKb2luVGFibGVPd25lckNvbCIsImpvaW4iLCJmdWxsSm9pblRhYmxlUmVsYXRlZENvbCIsImkiLCJsIiwibGVuZ3RoIiwib24iLCJqb2luVGFibGVNb2RlbENsYXNzIiwia25leCIsImRlbGV0ZSIsIndoZXJlSW4iLCJydW5BZnRlciIsImNvbnN0YW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEscUJBQXFCLFNBQTNCOztJQUVxQkMsaUM7OztBQUVuQiw2Q0FBWUMsSUFBWixFQUFrQkMsR0FBbEIsRUFBdUI7QUFBQTs7QUFBQSwrREFDckIsaUNBQU1ELElBQU4sRUFBWUMsR0FBWixDQURxQjs7QUFHckIsVUFBS0MsZ0JBQUwsR0FBd0IsSUFBeEI7QUFDQSxVQUFLQyxRQUFMLEdBQWdCRixJQUFJRSxRQUFwQjtBQUNBLFVBQUtDLEtBQUwsR0FBYUgsSUFBSUcsS0FBakI7QUFMcUI7QUFNdEI7OzhDQUVEQyxhLDBCQUFjQyxPLEVBQVM7QUFBQTs7QUFDckIsUUFBSUMsaUJBQWlCLEtBQUtKLFFBQUwsQ0FBY0ksY0FBZCxFQUFyQjtBQUNBLFFBQUlDLG1CQUFtQixLQUFLTCxRQUFMLENBQWNNLFNBQWQsR0FBMEIsTUFBMUIsR0FBbUNGLGNBQTFEO0FBQ0EsUUFBSUcsc0JBQXNCSCxpQkFBaUIsR0FBakIsR0FBdUJULGtCQUFqRDtBQUNBLFFBQUlhLGlCQUFpQixLQUFLUixRQUFMLENBQWNNLFNBQWQsR0FBMEIsR0FBMUIsR0FBZ0NYLGtCQUFyRDs7QUFFQSxRQUFJYyxVQUFVLEtBQUtSLEtBQUwsQ0FBV1MsT0FBWCxDQUFtQixLQUFLVixRQUFMLENBQWNXLFNBQWpDLENBQWQ7QUFDQSxRQUFJQyxpQkFBaUIsS0FBS1osUUFBTCxDQUFjWSxjQUFkLEVBQXJCOztBQUVBLFFBQUlDLHFCQUFxQixLQUFLYixRQUFMLENBQWNjLGlCQUFkLENBQ3RCQyxLQURzQixHQUV0QkMsWUFGc0IsQ0FFVGIsT0FGUyxFQUd0QmMsUUFIc0IsQ0FHYmQsT0FIYSxFQUdKLFFBSEksRUFJdEJlLE1BSnNCLENBSWZYLG1CQUplLEVBS3RCWSxNQUxzQixDQUtmLEtBQUtuQixRQUFMLENBQWNtQixNQUxDLEVBTXRCQyxjQU5zQixDQU1QLEtBQUtwQixRQUFMLENBQWNxQixxQkFBZCxFQU5PLEVBTWdDWixPQU5oQyxFQU90QmEsSUFQc0IsQ0FPakJqQixnQkFQaUIsRUFPQyxnQkFBUTtBQUM5QixVQUFNa0IsMEJBQTBCLE9BQUt2QixRQUFMLENBQWN1Qix1QkFBZCxFQUFoQzs7QUFFQSxXQUFLLElBQUlDLElBQUksQ0FBUixFQUFXQyxJQUFJRix3QkFBd0JHLE1BQTVDLEVBQW9ERixJQUFJQyxDQUF4RCxFQUEyRCxFQUFFRCxDQUE3RCxFQUFnRTtBQUM5REYsYUFBS0ssRUFBTCxDQUFRSix3QkFBd0JDLENBQXhCLENBQVIsRUFBb0NaLGVBQWVZLENBQWYsQ0FBcEM7QUFDRDtBQUNGLEtBYnNCLENBQXpCOztBQWVBLFdBQU8sS0FBS3hCLFFBQUwsQ0FBYzRCLG1CQUFkLENBQWtDekIsUUFBUTBCLElBQVIsRUFBbEMsRUFDSmQsS0FESSxHQUVKQyxZQUZJLENBRVNiLE9BRlQsRUFHSjJCLE1BSEksR0FJSkMsT0FKSSxDQUlJdkIsY0FKSixFQUlvQkssa0JBSnBCLEVBS0ptQixRQUxJLENBS0ssaUJBQUVDLFFBQUYsQ0FBVyxFQUFYLENBTEwsQ0FBUDtBQU1ELEc7Ozs7O2tCQXhDa0JyQyxpQyIsImZpbGUiOiJNYW55VG9NYW55VW5yZWxhdGVTcWxpdGVPcGVyYXRpb24uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFF1ZXJ5QnVpbGRlck9wZXJhdGlvbiBmcm9tICcuLi8uLi9xdWVyeUJ1aWxkZXIvb3BlcmF0aW9ucy9RdWVyeUJ1aWxkZXJPcGVyYXRpb24nO1xuXG5jb25zdCBzcWxpdGVCdWlsdEluUm93SWQgPSAnX3Jvd2lkXyc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hbnlUb01hbnlVbnJlbGF0ZVNxbGl0ZU9wZXJhdGlvbiBleHRlbmRzIFF1ZXJ5QnVpbGRlck9wZXJhdGlvbiB7XG5cbiAgY29uc3RydWN0b3IobmFtZSwgb3B0KSB7XG4gICAgc3VwZXIobmFtZSwgb3B0KTtcblxuICAgIHRoaXMuaXNXcml0ZU9wZXJhdGlvbiA9IHRydWU7XG4gICAgdGhpcy5yZWxhdGlvbiA9IG9wdC5yZWxhdGlvbjtcbiAgICB0aGlzLm93bmVyID0gb3B0Lm93bmVyO1xuICB9XG5cbiAgcXVlcnlFeGVjdXRvcihidWlsZGVyKSB7XG4gICAgbGV0IGpvaW5UYWJsZUFsaWFzID0gdGhpcy5yZWxhdGlvbi5qb2luVGFibGVBbGlhcygpO1xuICAgIGxldCBqb2luVGFibGVBc0FsaWFzID0gdGhpcy5yZWxhdGlvbi5qb2luVGFibGUgKyAnIGFzICcgKyBqb2luVGFibGVBbGlhcztcbiAgICBsZXQgam9pblRhYmxlQWxpYXNSb3dJZCA9IGpvaW5UYWJsZUFsaWFzICsgJy4nICsgc3FsaXRlQnVpbHRJblJvd0lkO1xuICAgIGxldCBqb2luVGFibGVSb3dJZCA9IHRoaXMucmVsYXRpb24uam9pblRhYmxlICsgJy4nICsgc3FsaXRlQnVpbHRJblJvd0lkO1xuXG4gICAgbGV0IG93bmVySWQgPSB0aGlzLm93bmVyLiR2YWx1ZXModGhpcy5yZWxhdGlvbi5vd25lclByb3ApO1xuICAgIGxldCBmdWxsUmVsYXRlZENvbCA9IHRoaXMucmVsYXRpb24uZnVsbFJlbGF0ZWRDb2woKTtcblxuICAgIGxldCBzZWxlY3RSZWxhdGVkUXVlcnkgPSB0aGlzLnJlbGF0aW9uLnJlbGF0ZWRNb2RlbENsYXNzXG4gICAgICAucXVlcnkoKVxuICAgICAgLmNoaWxkUXVlcnlPZihidWlsZGVyKVxuICAgICAgLmNvcHlGcm9tKGJ1aWxkZXIsIC93aGVyZS9pKVxuICAgICAgLnNlbGVjdChqb2luVGFibGVBbGlhc1Jvd0lkKVxuICAgICAgLm1vZGlmeSh0aGlzLnJlbGF0aW9uLm1vZGlmeSlcbiAgICAgIC53aGVyZUNvbXBvc2l0ZSh0aGlzLnJlbGF0aW9uLmZ1bGxKb2luVGFibGVPd25lckNvbCgpLCBvd25lcklkKVxuICAgICAgLmpvaW4oam9pblRhYmxlQXNBbGlhcywgam9pbiA9PiB7XG4gICAgICAgIGNvbnN0IGZ1bGxKb2luVGFibGVSZWxhdGVkQ29sID0gdGhpcy5yZWxhdGlvbi5mdWxsSm9pblRhYmxlUmVsYXRlZENvbCgpO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gZnVsbEpvaW5UYWJsZVJlbGF0ZWRDb2wubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgICAgICAgam9pbi5vbihmdWxsSm9pblRhYmxlUmVsYXRlZENvbFtpXSwgZnVsbFJlbGF0ZWRDb2xbaV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLnJlbGF0aW9uLmpvaW5UYWJsZU1vZGVsQ2xhc3MoYnVpbGRlci5rbmV4KCkpXG4gICAgICAucXVlcnkoKVxuICAgICAgLmNoaWxkUXVlcnlPZihidWlsZGVyKVxuICAgICAgLmRlbGV0ZSgpXG4gICAgICAud2hlcmVJbihqb2luVGFibGVSb3dJZCwgc2VsZWN0UmVsYXRlZFF1ZXJ5KVxuICAgICAgLnJ1bkFmdGVyKF8uY29uc3RhbnQoe30pKTtcbiAgfVxufVxuIl19