objection
Advanced tools
Comparing version 0.4.0-rc.1 to 0.4.0-rc.2
@@ -582,2 +582,27 @@ 'use strict'; | ||
/** | ||
* Returns the values of the given properties as an array. | ||
* | ||
* @param {Array.<string>} props | ||
* @return {Array.<*>} | ||
*/ | ||
}, { | ||
key: '$values', | ||
value: function $values() { | ||
var _this = this; | ||
if (arguments.length === 0) { | ||
return _lodash2.default.values(this); | ||
} else if (arguments.length === 1 && _lodash2.default.isArray(arguments[0])) { | ||
return _lodash2.default.map(arguments[0], function (prop) { | ||
return _this[prop]; | ||
}); | ||
} else { | ||
return _lodash2.default.map(arguments, function (prop) { | ||
return _this[prop]; | ||
}); | ||
} | ||
} | ||
/** | ||
* Returns a deep copy of this model. | ||
@@ -584,0 +609,0 @@ * |
'use strict'; | ||
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _desc, _value, _class; | ||
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _dec32, _dec33, _dec34, _dec35, _dec36, _dec37, _dec38, _dec39, _dec40, _dec41, _dec42, _dec43, _dec44, _dec45, _dec46, _dec47, _dec48, _dec49, _dec50, _dec51, _dec52, _dec53, _dec54, _dec55, _dec56, _dec57, _dec58, _dec59, _dec60, _dec61, _dec62, _dec63, _dec64, _dec65, _dec66, _dec67, _dec68, _dec69, _dec70, _dec71, _dec72, _dec73, _dec74, _desc, _value, _class; | ||
@@ -18,2 +18,6 @@ Object.defineProperty(exports, "__esModule", { | ||
var _typeof2 = require('babel-runtime/helpers/typeof'); | ||
var _typeof3 = _interopRequireDefault(_typeof2); | ||
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); | ||
@@ -83,3 +87,3 @@ | ||
*/ | ||
var QueryBuilderBase = (_dec = knexQueryMethod(), _dec2 = knexQueryMethod(), _dec3 = knexQueryMethod(), _dec4 = knexQueryMethod('delete'), _dec5 = knexQueryMethod(), _dec6 = knexQueryMethod(), _dec7 = knexQueryMethod(), _dec8 = knexQueryMethod(), _dec9 = knexQueryMethod(), _dec10 = knexQueryMethod(), _dec11 = knexQueryMethod(), _dec12 = knexQueryMethod(), _dec13 = knexQueryMethod(), _dec14 = knexQueryMethod(), _dec15 = knexQueryMethod(), _dec16 = knexQueryMethod(), _dec17 = knexQueryMethod(), _dec18 = knexQueryMethod(), _dec19 = knexQueryMethod(), _dec20 = knexQueryMethod(), _dec21 = knexQueryMethod(), _dec22 = knexQueryMethod(), _dec23 = knexQueryMethod(), _dec24 = knexQueryMethod(), _dec25 = knexQueryMethod(), _dec26 = knexQueryMethod(), _dec27 = knexQueryMethod(), _dec28 = knexQueryMethod(), _dec29 = knexQueryMethod(), _dec30 = knexQueryMethod(), _dec31 = knexQueryMethod(), _dec32 = knexQueryMethod(), _dec33 = knexQueryMethod(), _dec34 = knexQueryMethod(), _dec35 = knexQueryMethod(), _dec36 = knexQueryMethod(), _dec37 = knexQueryMethod(), _dec38 = knexQueryMethod(), _dec39 = knexQueryMethod(), _dec40 = knexQueryMethod(), _dec41 = knexQueryMethod(), _dec42 = knexQueryMethod(), _dec43 = knexQueryMethod(), _dec44 = knexQueryMethod(), _dec45 = knexQueryMethod(), _dec46 = knexQueryMethod(), _dec47 = knexQueryMethod(), _dec48 = knexQueryMethod(), _dec49 = knexQueryMethod(), _dec50 = knexQueryMethod(), _dec51 = knexQueryMethod(), _dec52 = knexQueryMethod(), _dec53 = knexQueryMethod(), _dec54 = knexQueryMethod(), _dec55 = knexQueryMethod(), _dec56 = knexQueryMethod(), _dec57 = knexQueryMethod(), _dec58 = knexQueryMethod(), _dec59 = knexQueryMethod(), _dec60 = knexQueryMethod(), _dec61 = knexQueryMethod(), _dec62 = knexQueryMethod(), _dec63 = knexQueryMethod(), _dec64 = knexQueryMethod(), _dec65 = knexQueryMethod(), _dec66 = knexQueryMethod(), _dec67 = knexQueryMethod(), _dec68 = knexQueryMethod(), _dec69 = knexQueryMethod(), _dec70 = knexQueryMethod(), _dec71 = knexQueryMethod(), _dec72 = knexQueryMethod(), (_class = (function () { | ||
var QueryBuilderBase = (_dec = knexQueryMethod(), _dec2 = knexQueryMethod(), _dec3 = knexQueryMethod(), _dec4 = knexQueryMethod('delete'), _dec5 = knexQueryMethod(), _dec6 = knexQueryMethod(), _dec7 = knexQueryMethod(), _dec8 = knexQueryMethod(), _dec9 = knexQueryMethod(), _dec10 = knexQueryMethod(), _dec11 = knexQueryMethod(), _dec12 = knexQueryMethod(), _dec13 = knexQueryMethod(), _dec14 = knexQueryMethod(), _dec15 = knexQueryMethod(), _dec16 = knexQueryMethod(), _dec17 = knexQueryMethod(), _dec18 = knexQueryMethod(), _dec19 = knexQueryMethod(), _dec20 = knexQueryMethod(), _dec21 = knexQueryMethod(), _dec22 = knexQueryMethod(), _dec23 = knexQueryMethod(), _dec24 = knexQueryMethod(), _dec25 = knexQueryMethod(), _dec26 = knexQueryMethod(), _dec27 = knexQueryMethod(), _dec28 = knexQueryMethod(), _dec29 = knexQueryMethod(), _dec30 = knexQueryMethod(), _dec31 = knexQueryMethod(), _dec32 = knexQueryMethod(), _dec33 = knexQueryMethod(), _dec34 = knexQueryMethod(), _dec35 = knexQueryMethod(), _dec36 = knexQueryMethod(), _dec37 = knexQueryMethod(), _dec38 = knexQueryMethod(), _dec39 = knexQueryMethod(), _dec40 = knexQueryMethod(), _dec41 = knexQueryMethod(), _dec42 = knexQueryMethod(), _dec43 = knexQueryMethod(), _dec44 = knexQueryMethod(), _dec45 = knexQueryMethod(), _dec46 = knexQueryMethod(), _dec47 = knexQueryMethod(), _dec48 = knexQueryMethod(), _dec49 = knexQueryMethod(), _dec50 = knexQueryMethod(), _dec51 = knexQueryMethod(), _dec52 = knexQueryMethod(), _dec53 = knexQueryMethod(), _dec54 = knexQueryMethod(), _dec55 = knexQueryMethod(), _dec56 = knexQueryMethod(), _dec57 = knexQueryMethod(), _dec58 = knexQueryMethod(), _dec59 = knexQueryMethod(), _dec60 = knexQueryMethod(), _dec61 = knexQueryMethod(), _dec62 = knexQueryMethod(), _dec63 = knexQueryMethod(), _dec64 = knexQueryMethod(), _dec65 = knexQueryMethod(), _dec66 = knexQueryMethod(), _dec67 = knexQueryMethod(), _dec68 = knexQueryMethod(), _dec69 = knexQueryMethod(), _dec70 = knexQueryMethod(), _dec71 = knexQueryMethod(), _dec72 = knexQueryMethod(), _dec73 = knexQueryMethod(), _dec74 = knexQueryMethod(), (_class = (function () { | ||
function QueryBuilderBase(knex) { | ||
@@ -358,2 +362,20 @@ (0, _classCallCheck3.default)(this, QueryBuilderBase); | ||
}, { | ||
key: 'forUpdate', | ||
value: function forUpdate() {} | ||
/** | ||
* See <a href="http://knexjs.org">knex documentation</a> | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
}, { | ||
key: 'forShare', | ||
value: function forShare() {} | ||
/** | ||
* See <a href="http://knexjs.org">knex documentation</a> | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
}, { | ||
key: 'as', | ||
@@ -984,2 +1006,127 @@ value: function as() {} | ||
/** | ||
* `where` for (possibly) composite keys. | ||
* | ||
* ```js | ||
* builder.whereComposite(['id', 'name'], [1, 'Jennifer']); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereComposite('id', '=', 1); | ||
* ``` | ||
* | ||
* @param {string|Array.<string>} cols | ||
* @param {string|*|Array.<*>} op | ||
* @param {*|Array.<*>=} values | ||
* | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
}, { | ||
key: 'whereComposite', | ||
value: function whereComposite(cols, op, values) { | ||
var _this = this; | ||
if (_lodash2.default.isUndefined(values)) { | ||
values = op; | ||
op = '='; | ||
} | ||
var formatter = this._knex.client.formatter(); | ||
formatter.operator(op); | ||
if (_lodash2.default.isString(cols) && !_lodash2.default.isArray(values)) { | ||
return this.where(cols, op, values); | ||
} else if (_lodash2.default.isArray(cols) && cols.length === 1 && !_lodash2.default.isArray(values)) { | ||
return this.where(cols[0], op, values); | ||
} else if (_lodash2.default.isArray(cols) && _lodash2.default.isArray(values) && cols.length === values.length) { | ||
_lodash2.default.each(cols, function (col, idx) { | ||
return _this.where(col, op, values[idx]); | ||
}); | ||
return this; | ||
} else { | ||
throw new Error('cols and values must both be either scalars or arrays. Arrays must have the same length.'); | ||
} | ||
} | ||
/** | ||
* `whereIn` for (possibly) composite keys. | ||
* | ||
* | ||
* ```js | ||
* builder.whereInComposite(['a', 'b'], [[1, 2], [3, 4], [1, 4]]); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereInComposite('a', [[1], [3], [1]]); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereInComposite('a', [1, 3, 1]); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereInComposite(['a', 'b'], SomeModel.query().select('a', 'b')); | ||
* ``` | ||
* | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
}, { | ||
key: 'whereInComposite', | ||
value: function whereInComposite(columns, values) { | ||
var _this2 = this; | ||
var isCompositeKey = _lodash2.default.isArray(columns) && columns.length > 1; | ||
if (isCompositeKey) { | ||
if (_utils2.default.isSqlite(this._knex)) { | ||
if (!_lodash2.default.isArray(values)) { | ||
// If the `values` is not an array of values but a function or a subquery | ||
// we have no way to implement this method. | ||
throw new Error('sqlite doesn\'t support multi-column where in clauses'); | ||
} | ||
// Sqlite doesn't support the `where in` syntax for multiple columns but | ||
// we can emulate it using grouped `or` clauses. | ||
return this.where(function (builder) { | ||
_lodash2.default.each(values, function (val) { | ||
builder.orWhere(function (builder) { | ||
_lodash2.default.each(columns, function (col, idx) { | ||
builder.andWhere(col, val[idx]); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} else { | ||
if (_lodash2.default.isArray(values)) { | ||
return this.whereIn(columns, values); | ||
} else { | ||
var _ret = (function () { | ||
// Because of a bug in knex, we need to build the where-in query from pieces | ||
// if the value is a subquery. | ||
var formatter = _this2._knex.client.formatter(); | ||
var sql = '(' + _lodash2.default.map(columns, function (col) { | ||
return formatter.wrap(col); | ||
}).join() + ')'; | ||
return { | ||
v: _this2.whereIn(_this2._knex.raw(sql), values) | ||
}; | ||
})(); | ||
if ((typeof _ret === 'undefined' ? 'undefined' : (0, _typeof3.default)(_ret)) === "object") return _ret.v; | ||
} | ||
} | ||
} else { | ||
var col = _lodash2.default.isString(columns) ? columns : columns[0]; | ||
if (_lodash2.default.isArray(values)) { | ||
values = _lodash2.default.compact(_lodash2.default.flatten(values)); | ||
} | ||
// For non-composite keys we can use the normal whereIn. | ||
return this.whereIn(col, values); | ||
} | ||
} | ||
/** | ||
* Json query APIs | ||
@@ -1453,3 +1600,3 @@ */ | ||
return QueryBuilderBase; | ||
})(), (_applyDecoratedDescriptor(_class.prototype, 'insert', [_dec], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'insert'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'update', [_dec2], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'update'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'delete', [_dec3], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'delete'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'del', [_dec4], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'del'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'select', [_dec5], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'select'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'as', [_dec6], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'as'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'columns', [_dec7], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'columns'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'column', [_dec8], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'column'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'from', [_dec9], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'from'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'fromJS', [_dec10], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'fromJS'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'into', [_dec11], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'into'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'withSchema', [_dec12], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'withSchema'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'table', [_dec13], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'table'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'distinct', [_dec14], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'distinct'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'join', [_dec15], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'join'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'joinRaw', [_dec16], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'joinRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'innerJoin', [_dec17], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'innerJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'leftJoin', [_dec18], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'leftJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'leftOuterJoin', [_dec19], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'leftOuterJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'rightJoin', [_dec20], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'rightJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'rightOuterJoin', [_dec21], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'rightOuterJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'outerJoin', [_dec22], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'outerJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'fullOuterJoin', [_dec23], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'fullOuterJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'crossJoin', [_dec24], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'crossJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'where', [_dec25], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'where'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'andWhere', [_dec26], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'andWhere'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhere', [_dec27], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhere'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNot', [_dec28], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNot'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNot', [_dec29], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNot'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereRaw', [_dec30], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereWrapped', [_dec31], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereWrapped'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'havingWrapped', [_dec32], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'havingWrapped'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereRaw', [_dec33], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereExists', [_dec34], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereExists', [_dec35], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotExists', [_dec36], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotExists', [_dec37], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereIn', [_dec38], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereIn', [_dec39], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotIn', [_dec40], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotIn', [_dec41], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNull', [_dec42], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNull', [_dec43], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotNull', [_dec44], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotNull', [_dec45], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereBetween', [_dec46], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotBetween', [_dec47], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereBetween', [_dec48], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotBetween', [_dec49], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'groupBy', [_dec50], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'groupBy'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'groupByRaw', [_dec51], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'groupByRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orderBy', [_dec52], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orderBy'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orderByRaw', [_dec53], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orderByRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'union', [_dec54], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'union'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'unionAll', [_dec55], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'unionAll'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'having', [_dec56], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'having'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'havingRaw', [_dec57], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'havingRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orHaving', [_dec58], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orHaving'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orHavingRaw', [_dec59], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orHavingRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'offset', [_dec60], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'offset'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'limit', [_dec61], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'limit'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'count', [_dec62], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'count'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'countDistinct', [_dec63], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'countDistinct'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'min', [_dec64], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'min'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'max', [_dec65], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'max'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'sum', [_dec66], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'sum'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'avg', [_dec67], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'avg'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'avgDistinct', [_dec68], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'avgDistinct'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'debug', [_dec69], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'debug'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'returning', [_dec70], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'returning'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'truncate', [_dec71], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'truncate'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'connection', [_dec72], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'connection'), _class.prototype)), _class)); | ||
})(), (_applyDecoratedDescriptor(_class.prototype, 'insert', [_dec], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'insert'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'update', [_dec2], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'update'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'delete', [_dec3], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'delete'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'del', [_dec4], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'del'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'select', [_dec5], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'select'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'forUpdate', [_dec6], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'forUpdate'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'forShare', [_dec7], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'forShare'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'as', [_dec8], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'as'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'columns', [_dec9], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'columns'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'column', [_dec10], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'column'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'from', [_dec11], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'from'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'fromJS', [_dec12], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'fromJS'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'into', [_dec13], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'into'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'withSchema', [_dec14], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'withSchema'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'table', [_dec15], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'table'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'distinct', [_dec16], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'distinct'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'join', [_dec17], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'join'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'joinRaw', [_dec18], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'joinRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'innerJoin', [_dec19], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'innerJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'leftJoin', [_dec20], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'leftJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'leftOuterJoin', [_dec21], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'leftOuterJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'rightJoin', [_dec22], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'rightJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'rightOuterJoin', [_dec23], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'rightOuterJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'outerJoin', [_dec24], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'outerJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'fullOuterJoin', [_dec25], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'fullOuterJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'crossJoin', [_dec26], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'crossJoin'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'where', [_dec27], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'where'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'andWhere', [_dec28], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'andWhere'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhere', [_dec29], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhere'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNot', [_dec30], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNot'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNot', [_dec31], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNot'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereRaw', [_dec32], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereWrapped', [_dec33], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereWrapped'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'havingWrapped', [_dec34], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'havingWrapped'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereRaw', [_dec35], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereExists', [_dec36], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereExists', [_dec37], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotExists', [_dec38], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotExists', [_dec39], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotExists'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereIn', [_dec40], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereIn', [_dec41], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotIn', [_dec42], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotIn', [_dec43], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotIn'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNull', [_dec44], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNull', [_dec45], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotNull', [_dec46], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotNull', [_dec47], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotNull'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereBetween', [_dec48], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'whereNotBetween', [_dec49], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'whereNotBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereBetween', [_dec50], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orWhereNotBetween', [_dec51], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orWhereNotBetween'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'groupBy', [_dec52], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'groupBy'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'groupByRaw', [_dec53], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'groupByRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orderBy', [_dec54], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orderBy'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orderByRaw', [_dec55], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orderByRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'union', [_dec56], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'union'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'unionAll', [_dec57], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'unionAll'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'having', [_dec58], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'having'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'havingRaw', [_dec59], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'havingRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orHaving', [_dec60], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orHaving'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'orHavingRaw', [_dec61], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'orHavingRaw'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'offset', [_dec62], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'offset'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'limit', [_dec63], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'limit'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'count', [_dec64], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'count'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'countDistinct', [_dec65], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'countDistinct'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'min', [_dec66], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'min'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'max', [_dec67], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'max'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'sum', [_dec68], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'sum'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'avg', [_dec69], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'avg'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'avgDistinct', [_dec70], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'avgDistinct'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'debug', [_dec71], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'debug'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'returning', [_dec72], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'returning'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'truncate', [_dec73], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'truncate'), _class.prototype), _applyDecoratedDescriptor(_class.prototype, 'connection', [_dec74], (0, _getOwnPropertyDescriptor2.default)(_class.prototype, 'connection'), _class.prototype)), _class)); | ||
@@ -1468,3 +1615,3 @@ /** | ||
for (var i = 0, l = arguments.length; i < l; ++i) { | ||
if (arguments[i] === undefined) { | ||
if (_lodash2.default.isUndefined(arguments[i])) { | ||
// None of the query builder methods should accept undefined. Do nothing if | ||
@@ -1503,6 +1650,10 @@ // one of the arguments is undefined. This enables us to do things like | ||
return function () { | ||
var context = query.internalContext(); | ||
var builder = new QueryBuilderBase(query._knex).internalContext(context); | ||
func.call(builder, builder); | ||
builder.buildInto(this); | ||
if (_utils2.default.isKnexQueryBuilder(this)) { | ||
var context = query.internalContext(); | ||
var builder = new QueryBuilderBase(query._knex).internalContext(context); | ||
func.call(builder, builder); | ||
builder.buildInto(this); | ||
} else { | ||
return func.apply(this, arguments); | ||
} | ||
}; | ||
@@ -1509,0 +1660,0 @@ } |
@@ -73,2 +73,11 @@ 'use strict'; | ||
* @ignore | ||
* @param knexQueryBuilder | ||
* @returns {boolean} | ||
*/ | ||
module.exports.isKnexQueryBuilder = function (knexQueryBuilder) { | ||
return knexQueryBuilder && knexQueryBuilder.client && _.isString(knexQueryBuilder.client.dialect); | ||
}; | ||
/** | ||
* @ignore | ||
* @param knex | ||
@@ -75,0 +84,0 @@ * @returns {boolean} |
{ | ||
"name": "objection", | ||
"version": "0.4.0-rc.1", | ||
"version": "0.4.0-rc.2", | ||
"description": "An SQL-friendly ORM for Node.js", | ||
@@ -5,0 +5,0 @@ "main": "lib/objection.js", |
@@ -503,2 +503,18 @@ import _ from 'lodash'; | ||
/** | ||
* Returns the values of the given properties as an array. | ||
* | ||
* @param {Array.<string>} props | ||
* @return {Array.<*>} | ||
*/ | ||
$values() { | ||
if (arguments.length === 0) { | ||
return _.values(this); | ||
} else if (arguments.length === 1 && _.isArray(arguments[0])) { | ||
return _.map(arguments[0], prop => this[prop]); | ||
} else { | ||
return _.map(arguments, prop => this[prop]); | ||
} | ||
} | ||
/** | ||
* Returns a deep copy of this model. | ||
@@ -570,3 +586,3 @@ * | ||
static fromJson(json, options) { | ||
var model = new this(); | ||
let model = new this(); | ||
model.$setJson(json || {}, options); | ||
@@ -585,3 +601,3 @@ return model; | ||
static fromDatabaseJson(json) { | ||
var model = new this(); | ||
let model = new this(); | ||
model.$setDatabaseJson(json || {}); | ||
@@ -588,0 +604,0 @@ return model; |
@@ -1421,7 +1421,11 @@ import _ from 'lodash'; | ||
}); | ||
} else { | ||
} else if (_.isArray(ret)) { | ||
// If the return value is not an array of models, we assume | ||
// it is an array of identifiers. | ||
_.forEach(insertion.models(), (model, idx) => { | ||
model.$id(ret[idx]); | ||
// Don't set the id if the model already has one. MySQL and Sqlite don't return the correct | ||
// primary key value if the id is not generated in db, but given explicitly. | ||
if (!model.$id()) { | ||
model.$id(ret[idx]); | ||
} | ||
}); | ||
@@ -1428,0 +1432,0 @@ } |
@@ -243,2 +243,18 @@ import _ from 'lodash'; | ||
@knexQueryMethod() | ||
forUpdate(...args) {} | ||
/** | ||
* See <a href="http://knexjs.org">knex documentation</a> | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
@knexQueryMethod() | ||
forShare(...args) {} | ||
/** | ||
* See <a href="http://knexjs.org">knex documentation</a> | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
@knexQueryMethod() | ||
as(...args) {} | ||
@@ -731,2 +747,107 @@ | ||
/** | ||
* `where` for (possibly) composite keys. | ||
* | ||
* ```js | ||
* builder.whereComposite(['id', 'name'], [1, 'Jennifer']); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereComposite('id', '=', 1); | ||
* ``` | ||
* | ||
* @param {string|Array.<string>} cols | ||
* @param {string|*|Array.<*>} op | ||
* @param {*|Array.<*>=} values | ||
* | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
whereComposite(cols, op, values) { | ||
if (_.isUndefined(values)) { | ||
values = op; | ||
op = '='; | ||
} | ||
let formatter = this._knex.client.formatter(); | ||
formatter.operator(op); | ||
if (_.isString(cols) && !_.isArray(values)) { | ||
return this.where(cols, op, values); | ||
} else if (_.isArray(cols) && cols.length === 1 && !_.isArray(values)) { | ||
return this.where(cols[0], op, values); | ||
} else if (_.isArray(cols) && _.isArray(values) && cols.length === values.length) { | ||
_.each(cols, (col, idx) => this.where(col, op, values[idx])); | ||
return this; | ||
} else { | ||
throw new Error('cols and values must both be either scalars or arrays. Arrays must have the same length.'); | ||
} | ||
} | ||
/** | ||
* `whereIn` for (possibly) composite keys. | ||
* | ||
* | ||
* ```js | ||
* builder.whereInComposite(['a', 'b'], [[1, 2], [3, 4], [1, 4]]); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereInComposite('a', [[1], [3], [1]]); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereInComposite('a', [1, 3, 1]); | ||
* ``` | ||
* | ||
* ```js | ||
* builder.whereInComposite(['a', 'b'], SomeModel.query().select('a', 'b')); | ||
* ``` | ||
* | ||
* @returns {QueryBuilderBase} | ||
*/ | ||
whereInComposite(columns, values) { | ||
let isCompositeKey = _.isArray(columns) && columns.length > 1; | ||
if (isCompositeKey) { | ||
if (utils.isSqlite(this._knex)) { | ||
if (!_.isArray(values)) { | ||
// If the `values` is not an array of values but a function or a subquery | ||
// we have no way to implement this method. | ||
throw new Error('sqlite doesn\'t support multi-column where in clauses'); | ||
} | ||
// Sqlite doesn't support the `where in` syntax for multiple columns but | ||
// we can emulate it using grouped `or` clauses. | ||
return this.where(builder => { | ||
_.each(values, (val) => { | ||
builder.orWhere(builder => { | ||
_.each(columns, (col, idx) => { | ||
builder.andWhere(col, val[idx]); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} else { | ||
if (_.isArray(values)) { | ||
return this.whereIn(columns, values); | ||
} else { | ||
// Because of a bug in knex, we need to build the where-in query from pieces | ||
// if the value is a subquery. | ||
let formatter = this._knex.client.formatter(); | ||
let sql = '(' + _.map(columns, col => formatter.wrap(col)).join() + ')'; | ||
return this.whereIn(this._knex.raw(sql), values); | ||
} | ||
} | ||
} else { | ||
let col = _.isString(columns) ? columns : columns[0]; | ||
if (_.isArray(values)) { | ||
values = _.compact(_.flatten(values)); | ||
} | ||
// For non-composite keys we can use the normal whereIn. | ||
return this.whereIn(col, values); | ||
} | ||
} | ||
/** | ||
* Json query APIs | ||
@@ -1123,3 +1244,3 @@ */ | ||
for (let i = 0, l = arguments.length; i < l; ++i) { | ||
if (arguments[i] === undefined) { | ||
if (_.isUndefined(arguments[i])) { | ||
// None of the query builder methods should accept undefined. Do nothing if | ||
@@ -1158,6 +1279,10 @@ // one of the arguments is undefined. This enables us to do things like | ||
return function () { | ||
let context = query.internalContext(); | ||
let builder = new QueryBuilderBase(query._knex).internalContext(context); | ||
func.call(builder, builder); | ||
builder.buildInto(this); | ||
if (utils.isKnexQueryBuilder(this)) { | ||
let context = query.internalContext(); | ||
let builder = new QueryBuilderBase(query._knex).internalContext(context); | ||
func.call(builder, builder); | ||
builder.buildInto(this); | ||
} else { | ||
return func.apply(this, arguments); | ||
} | ||
}; | ||
@@ -1164,0 +1289,0 @@ } |
@@ -63,2 +63,13 @@ 'use strict'; | ||
* @ignore | ||
* @param knexQueryBuilder | ||
* @returns {boolean} | ||
*/ | ||
module.exports.isKnexQueryBuilder = function (knexQueryBuilder) { | ||
return knexQueryBuilder | ||
&& knexQueryBuilder.client | ||
&& _.isString(knexQueryBuilder.client.dialect); | ||
}; | ||
/** | ||
* @ignore | ||
* @param knex | ||
@@ -65,0 +76,0 @@ * @returns {boolean} |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
621772
19221
0