objection
Version:
An SQL-friendly ORM for Node.js
65 lines (46 loc) • 5.33 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 _WrappingQueryBuilderOperation = require('./WrappingQueryBuilderOperation');
var _WrappingQueryBuilderOperation2 = _interopRequireDefault(_WrappingQueryBuilderOperation);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var WhereRefOperation = function (_WrappingQueryBuilder) {
(0, _inherits3.default)(WhereRefOperation, _WrappingQueryBuilder);
function WhereRefOperation() {
(0, _classCallCheck3.default)(this, WhereRefOperation);
return (0, _possibleConstructorReturn3.default)(this, _WrappingQueryBuilder.apply(this, arguments));
}
WhereRefOperation.prototype.onBuild = function onBuild(knexBuilder) {
if (this.args.length === 2) {
this.whereRef(knexBuilder, this.args[0], '=', this.args[1]);
} else if (this.args.length === 3) {
this.whereRef(knexBuilder, this.args[0], this.args[1], this.args[2]);
} else {
throw new Error('expected 2 or 3 arguments');
}
};
WhereRefOperation.prototype.whereRef = function whereRef(knexBuilder, lhs, op, rhs) {
var formatter = knexBuilder.client.formatter();
op = formatter.operator(op);
if (typeof lhs !== 'string' || typeof rhs !== 'string' || typeof op !== 'string') {
throw new Error('whereRef: invalid operands or operator');
}
var sql = formatter.wrap(lhs) + ' ' + op + ' ' + formatter.wrap(rhs);
if (this.opt.bool === 'or') {
knexBuilder.orWhereRaw(sql);
} else {
knexBuilder.whereRaw(sql);
}
};
return WhereRefOperation;
}(_WrappingQueryBuilderOperation2.default);
exports.default = WhereRefOperation;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIldoZXJlUmVmT3BlcmF0aW9uLmpzIl0sIm5hbWVzIjpbIldoZXJlUmVmT3BlcmF0aW9uIiwib25CdWlsZCIsImtuZXhCdWlsZGVyIiwiYXJncyIsImxlbmd0aCIsIndoZXJlUmVmIiwiRXJyb3IiLCJsaHMiLCJvcCIsInJocyIsImZvcm1hdHRlciIsImNsaWVudCIsIm9wZXJhdG9yIiwic3FsIiwid3JhcCIsIm9wdCIsImJvb2wiLCJvcldoZXJlUmF3Iiwid2hlcmVSYXciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7O0lBRXFCQSxpQjs7Ozs7Ozs7OEJBRW5CQyxPLG9CQUFRQyxXLEVBQWE7QUFDbkIsUUFBSSxLQUFLQyxJQUFMLENBQVVDLE1BQVYsS0FBcUIsQ0FBekIsRUFBNEI7QUFDMUIsV0FBS0MsUUFBTCxDQUFjSCxXQUFkLEVBQTJCLEtBQUtDLElBQUwsQ0FBVSxDQUFWLENBQTNCLEVBQXlDLEdBQXpDLEVBQThDLEtBQUtBLElBQUwsQ0FBVSxDQUFWLENBQTlDO0FBQ0QsS0FGRCxNQUVPLElBQUksS0FBS0EsSUFBTCxDQUFVQyxNQUFWLEtBQXFCLENBQXpCLEVBQTRCO0FBQ2pDLFdBQUtDLFFBQUwsQ0FBY0gsV0FBZCxFQUEyQixLQUFLQyxJQUFMLENBQVUsQ0FBVixDQUEzQixFQUF5QyxLQUFLQSxJQUFMLENBQVUsQ0FBVixDQUF6QyxFQUF1RCxLQUFLQSxJQUFMLENBQVUsQ0FBVixDQUF2RDtBQUNELEtBRk0sTUFFQTtBQUNMLFlBQU0sSUFBSUcsS0FBSixDQUFVLDJCQUFWLENBQU47QUFDRDtBQUNGLEc7OzhCQUVERCxRLHFCQUFTSCxXLEVBQWFLLEcsRUFBS0MsRSxFQUFJQyxHLEVBQUs7QUFDbEMsUUFBTUMsWUFBWVIsWUFBWVMsTUFBWixDQUFtQkQsU0FBbkIsRUFBbEI7QUFDQUYsU0FBS0UsVUFBVUUsUUFBVixDQUFtQkosRUFBbkIsQ0FBTDs7QUFFQSxRQUFJLE9BQU9ELEdBQVAsS0FBZSxRQUFmLElBQTJCLE9BQU9FLEdBQVAsS0FBZSxRQUExQyxJQUFzRCxPQUFPRCxFQUFQLEtBQWMsUUFBeEUsRUFBa0Y7QUFDaEYsWUFBTSxJQUFJRixLQUFKLENBQVUsd0NBQVYsQ0FBTjtBQUNEOztBQUVELFFBQUlPLE1BQU1ILFVBQVVJLElBQVYsQ0FBZVAsR0FBZixJQUFzQixHQUF0QixHQUE0QkMsRUFBNUIsR0FBaUMsR0FBakMsR0FBdUNFLFVBQVVJLElBQVYsQ0FBZUwsR0FBZixDQUFqRDs7QUFFQSxRQUFJLEtBQUtNLEdBQUwsQ0FBU0MsSUFBVCxLQUFrQixJQUF0QixFQUE0QjtBQUMxQmQsa0JBQVllLFVBQVosQ0FBdUJKLEdBQXZCO0FBQ0QsS0FGRCxNQUVPO0FBQ0xYLGtCQUFZZ0IsUUFBWixDQUFxQkwsR0FBckI7QUFDRDtBQUNGLEc7Ozs7O2tCQTNCa0JiLGlCIiwiZmlsZSI6IldoZXJlUmVmT3BlcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdyYXBwaW5nUXVlcnlCdWlsZGVyT3BlcmF0aW9uIGZyb20gJy4vV3JhcHBpbmdRdWVyeUJ1aWxkZXJPcGVyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBXaGVyZVJlZk9wZXJhdGlvbiBleHRlbmRzIFdyYXBwaW5nUXVlcnlCdWlsZGVyT3BlcmF0aW9uIHtcblxuICBvbkJ1aWxkKGtuZXhCdWlsZGVyKSB7XG4gICAgaWYgKHRoaXMuYXJncy5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRoaXMud2hlcmVSZWYoa25leEJ1aWxkZXIsIHRoaXMuYXJnc1swXSwgJz0nLCB0aGlzLmFyZ3NbMV0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5hcmdzLmxlbmd0aCA9PT0gMykge1xuICAgICAgdGhpcy53aGVyZVJlZihrbmV4QnVpbGRlciwgdGhpcy5hcmdzWzBdLCB0aGlzLmFyZ3NbMV0sIHRoaXMuYXJnc1syXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgMiBvciAzIGFyZ3VtZW50cycpO1xuICAgIH1cbiAgfVxuXG4gIHdoZXJlUmVmKGtuZXhCdWlsZGVyLCBsaHMsIG9wLCByaHMpIHtcbiAgICBjb25zdCBmb3JtYXR0ZXIgPSBrbmV4QnVpbGRlci5jbGllbnQuZm9ybWF0dGVyKCk7XG4gICAgb3AgPSBmb3JtYXR0ZXIub3BlcmF0b3Iob3ApO1xuXG4gICAgaWYgKHR5cGVvZiBsaHMgIT09ICdzdHJpbmcnIHx8IHR5cGVvZiByaHMgIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvcCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignd2hlcmVSZWY6IGludmFsaWQgb3BlcmFuZHMgb3Igb3BlcmF0b3InKTtcbiAgICB9XG5cbiAgICBsZXQgc3FsID0gZm9ybWF0dGVyLndyYXAobGhzKSArICcgJyArIG9wICsgJyAnICsgZm9ybWF0dGVyLndyYXAocmhzKTtcblxuICAgIGlmICh0aGlzLm9wdC5ib29sID09PSAnb3InKSB7XG4gICAgICBrbmV4QnVpbGRlci5vcldoZXJlUmF3KHNxbCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGtuZXhCdWlsZGVyLndoZXJlUmF3KHNxbCk7XG4gICAgfVxuICB9XG59XG5cbiJdfQ==