objection
Version:
An SQL-friendly ORM for Node.js
65 lines (48 loc) • 5.98 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 WhereCompositeOperation = function (_WrappingQueryBuilder) {
(0, _inherits3.default)(WhereCompositeOperation, _WrappingQueryBuilder);
function WhereCompositeOperation() {
(0, _classCallCheck3.default)(this, WhereCompositeOperation);
return (0, _possibleConstructorReturn3.default)(this, _WrappingQueryBuilder.apply(this, arguments));
}
WhereCompositeOperation.prototype.onBuild = function onBuild(knexBuilder) {
if (this.args.length === 2) {
this.build(knexBuilder, this.args[0], '=', this.args[1]);
} else if (this.args.length === 3) {
this.build(knexBuilder, this.args[0], this.args[1], this.args[2]);
} else {
throw new Error('invalid number of arguments ' + this.args.length);
}
};
WhereCompositeOperation.prototype.build = function build(knexBuilder, cols, op, values) {
var colsIsArray = Array.isArray(cols);
var valuesIsArray = Array.isArray(values);
if (!colsIsArray && !valuesIsArray) {
knexBuilder.where(cols, op, values);
} else if (colsIsArray && cols.length === 1 && !valuesIsArray) {
knexBuilder.where(cols[0], op, values);
} else if (colsIsArray && valuesIsArray && cols.length === values.length) {
for (var i = 0, l = cols.length; i < l; ++i) {
knexBuilder.where(cols[i], op, values[i]);
}
} else {
throw new Error('both cols and values must have same dimensions');
}
};
return WhereCompositeOperation;
}(_WrappingQueryBuilderOperation2.default);
exports.default = WhereCompositeOperation;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIldoZXJlQ29tcG9zaXRlT3BlcmF0aW9uLmpzIl0sIm5hbWVzIjpbIldoZXJlQ29tcG9zaXRlT3BlcmF0aW9uIiwib25CdWlsZCIsImtuZXhCdWlsZGVyIiwiYXJncyIsImxlbmd0aCIsImJ1aWxkIiwiRXJyb3IiLCJjb2xzIiwib3AiLCJ2YWx1ZXMiLCJjb2xzSXNBcnJheSIsIkFycmF5IiwiaXNBcnJheSIsInZhbHVlc0lzQXJyYXkiLCJ3aGVyZSIsImkiLCJsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7OztJQUVxQkEsdUI7Ozs7Ozs7O29DQUVuQkMsTyxvQkFBUUMsVyxFQUFhO0FBQ25CLFFBQUksS0FBS0MsSUFBTCxDQUFVQyxNQUFWLEtBQXFCLENBQXpCLEVBQTRCO0FBQzFCLFdBQUtDLEtBQUwsQ0FBV0gsV0FBWCxFQUF3QixLQUFLQyxJQUFMLENBQVUsQ0FBVixDQUF4QixFQUFzQyxHQUF0QyxFQUEyQyxLQUFLQSxJQUFMLENBQVUsQ0FBVixDQUEzQztBQUNELEtBRkQsTUFFTyxJQUFJLEtBQUtBLElBQUwsQ0FBVUMsTUFBVixLQUFxQixDQUF6QixFQUE0QjtBQUNqQyxXQUFLQyxLQUFMLENBQVdILFdBQVgsRUFBd0IsS0FBS0MsSUFBTCxDQUFVLENBQVYsQ0FBeEIsRUFBc0MsS0FBS0EsSUFBTCxDQUFVLENBQVYsQ0FBdEMsRUFBb0QsS0FBS0EsSUFBTCxDQUFVLENBQVYsQ0FBcEQ7QUFDRCxLQUZNLE1BRUE7QUFDTCxZQUFNLElBQUlHLEtBQUosa0NBQXlDLEtBQUtILElBQUwsQ0FBVUMsTUFBbkQsQ0FBTjtBQUNEO0FBQ0YsRzs7b0NBRURDLEssa0JBQU1ILFcsRUFBYUssSSxFQUFNQyxFLEVBQUlDLE0sRUFBUTtBQUNuQyxRQUFNQyxjQUFjQyxNQUFNQyxPQUFOLENBQWNMLElBQWQsQ0FBcEI7QUFDQSxRQUFNTSxnQkFBZ0JGLE1BQU1DLE9BQU4sQ0FBY0gsTUFBZCxDQUF0Qjs7QUFFQSxRQUFJLENBQUNDLFdBQUQsSUFBZ0IsQ0FBQ0csYUFBckIsRUFBb0M7QUFDbENYLGtCQUFZWSxLQUFaLENBQWtCUCxJQUFsQixFQUF3QkMsRUFBeEIsRUFBNEJDLE1BQTVCO0FBQ0QsS0FGRCxNQUVPLElBQUlDLGVBQWVILEtBQUtILE1BQUwsS0FBZ0IsQ0FBL0IsSUFBb0MsQ0FBQ1MsYUFBekMsRUFBd0Q7QUFDN0RYLGtCQUFZWSxLQUFaLENBQWtCUCxLQUFLLENBQUwsQ0FBbEIsRUFBMkJDLEVBQTNCLEVBQStCQyxNQUEvQjtBQUNELEtBRk0sTUFFQSxJQUFJQyxlQUFlRyxhQUFmLElBQWdDTixLQUFLSCxNQUFMLEtBQWdCSyxPQUFPTCxNQUEzRCxFQUFtRTtBQUN4RSxXQUFLLElBQUlXLElBQUksQ0FBUixFQUFXQyxJQUFJVCxLQUFLSCxNQUF6QixFQUFpQ1csSUFBSUMsQ0FBckMsRUFBd0MsRUFBRUQsQ0FBMUMsRUFBNkM7QUFDM0NiLG9CQUFZWSxLQUFaLENBQWtCUCxLQUFLUSxDQUFMLENBQWxCLEVBQTJCUCxFQUEzQixFQUErQkMsT0FBT00sQ0FBUCxDQUEvQjtBQUNEO0FBQ0YsS0FKTSxNQUlBO0FBQ0wsWUFBTSxJQUFJVCxLQUFKLGtEQUFOO0FBQ0Q7QUFDRixHOzs7OztrQkEzQmtCTix1QiIsImZpbGUiOiJXaGVyZUNvbXBvc2l0ZU9wZXJhdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXcmFwcGluZ1F1ZXJ5QnVpbGRlck9wZXJhdGlvbiBmcm9tICcuL1dyYXBwaW5nUXVlcnlCdWlsZGVyT3BlcmF0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV2hlcmVDb21wb3NpdGVPcGVyYXRpb24gZXh0ZW5kcyBXcmFwcGluZ1F1ZXJ5QnVpbGRlck9wZXJhdGlvbiB7XG5cbiAgb25CdWlsZChrbmV4QnVpbGRlcikge1xuICAgIGlmICh0aGlzLmFyZ3MubGVuZ3RoID09PSAyKSB7XG4gICAgICB0aGlzLmJ1aWxkKGtuZXhCdWlsZGVyLCB0aGlzLmFyZ3NbMF0sICc9JywgdGhpcy5hcmdzWzFdKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuYXJncy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHRoaXMuYnVpbGQoa25leEJ1aWxkZXIsIHRoaXMuYXJnc1swXSwgdGhpcy5hcmdzWzFdLCB0aGlzLmFyZ3NbMl0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgbnVtYmVyIG9mIGFyZ3VtZW50cyAke3RoaXMuYXJncy5sZW5ndGh9YCk7XG4gICAgfVxuICB9XG5cbiAgYnVpbGQoa25leEJ1aWxkZXIsIGNvbHMsIG9wLCB2YWx1ZXMpIHtcbiAgICBjb25zdCBjb2xzSXNBcnJheSA9IEFycmF5LmlzQXJyYXkoY29scyk7XG4gICAgY29uc3QgdmFsdWVzSXNBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWVzKTtcblxuICAgIGlmICghY29sc0lzQXJyYXkgJiYgIXZhbHVlc0lzQXJyYXkpIHtcbiAgICAgIGtuZXhCdWlsZGVyLndoZXJlKGNvbHMsIG9wLCB2YWx1ZXMpO1xuICAgIH0gZWxzZSBpZiAoY29sc0lzQXJyYXkgJiYgY29scy5sZW5ndGggPT09IDEgJiYgIXZhbHVlc0lzQXJyYXkpIHtcbiAgICAgIGtuZXhCdWlsZGVyLndoZXJlKGNvbHNbMF0sIG9wLCB2YWx1ZXMpO1xuICAgIH0gZWxzZSBpZiAoY29sc0lzQXJyYXkgJiYgdmFsdWVzSXNBcnJheSAmJiBjb2xzLmxlbmd0aCA9PT0gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBjb2xzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICBrbmV4QnVpbGRlci53aGVyZShjb2xzW2ldLCBvcCwgdmFsdWVzW2ldKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGJvdGggY29scyBhbmQgdmFsdWVzIG11c3QgaGF2ZSBzYW1lIGRpbWVuc2lvbnNgKTtcbiAgICB9XG4gIH1cbn1cblxuIl19