UNPKG

objection

Version:
77 lines (62 loc) 8 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = queryBuilderOperation; var _lodash = require('lodash'); var _lodash2 = _interopRequireDefault(_lodash); var _dbUtils = require('../../utils/dbUtils'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function queryBuilderOperation(input, name) { var normalizedInput = normalizeInput(input); return function (target, property, descriptor) { var operationName = name || property; if (_lodash2.default.isFunction(input) || _lodash2.default.isArray(input)) { descriptor.value = function decorator$queryBuilderOperation() { var args = new Array(arguments.length); // Don't turn this into a function. This needs to be inline for V8 to optimize this. for (var i = 0, l = arguments.length; i < l; ++i) { args[i] = arguments[i]; } var methodDesc = normalizedInput.default; var method = new methodDesc.operationClass(operationName, methodDesc.opt); return this.callQueryBuilderOperation(method, args); }; } else { descriptor.value = function decorator$queryBuilderOperationWithDialect() { var args = new Array(arguments.length); // Don't turn this into a function. This needs to be inline for V8 to optimize this. for (var i = 0, l = arguments.length; i < l; ++i) { args[i] = arguments[i]; } var dialect = (0, _dbUtils.getDialect)(this.knex()); var methodDesc = normalizedInput[dialect] || normalizedInput.default; var method = new methodDesc.operationClass(operationName, methodDesc.opt); return this.callQueryBuilderOperation(method, args); }; } }; } function normalizeInput(input) { if (_lodash2.default.isFunction(input) || _lodash2.default.isArray(input)) { return { default: normalizeQueryOperationDesc(input) }; } else { return _lodash2.default.mapValues(input, normalizeQueryOperationDesc); } } function normalizeQueryOperationDesc(desc) { if (_lodash2.default.isArray(desc)) { return { operationClass: desc[0], opt: desc[1] }; } else { return { operationClass: desc, opt: {} }; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInF1ZXJ5QnVpbGRlck9wZXJhdGlvbi5qcyJdLCJuYW1lcyI6WyJxdWVyeUJ1aWxkZXJPcGVyYXRpb24iLCJpbnB1dCIsIm5hbWUiLCJub3JtYWxpemVkSW5wdXQiLCJub3JtYWxpemVJbnB1dCIsInRhcmdldCIsInByb3BlcnR5IiwiZGVzY3JpcHRvciIsIm9wZXJhdGlvbk5hbWUiLCJpc0Z1bmN0aW9uIiwiaXNBcnJheSIsInZhbHVlIiwiZGVjb3JhdG9yJHF1ZXJ5QnVpbGRlck9wZXJhdGlvbiIsImFyZ3MiLCJBcnJheSIsImFyZ3VtZW50cyIsImxlbmd0aCIsImkiLCJsIiwibWV0aG9kRGVzYyIsImRlZmF1bHQiLCJtZXRob2QiLCJvcGVyYXRpb25DbGFzcyIsIm9wdCIsImNhbGxRdWVyeUJ1aWxkZXJPcGVyYXRpb24iLCJkZWNvcmF0b3IkcXVlcnlCdWlsZGVyT3BlcmF0aW9uV2l0aERpYWxlY3QiLCJkaWFsZWN0Iiwia25leCIsIm5vcm1hbGl6ZVF1ZXJ5T3BlcmF0aW9uRGVzYyIsIm1hcFZhbHVlcyIsImRlc2MiXSwibWFwcGluZ3MiOiI7Ozs7O2tCQUd3QkEscUI7O0FBSHhCOzs7O0FBQ0E7Ozs7QUFFZSxTQUFTQSxxQkFBVCxDQUErQkMsS0FBL0IsRUFBc0NDLElBQXRDLEVBQTRDO0FBQ3pELE1BQU1DLGtCQUFrQkMsZUFBZUgsS0FBZixDQUF4Qjs7QUFFQSxTQUFPLFVBQVVJLE1BQVYsRUFBa0JDLFFBQWxCLEVBQTRCQyxVQUE1QixFQUF3QztBQUM3QyxRQUFNQyxnQkFBZ0JOLFFBQVFJLFFBQTlCO0FBQ0EsUUFBSSxpQkFBRUcsVUFBRixDQUFhUixLQUFiLEtBQXVCLGlCQUFFUyxPQUFGLENBQVVULEtBQVYsQ0FBM0IsRUFBNkM7QUFDM0NNLGlCQUFXSSxLQUFYLEdBQW1CLFNBQVNDLCtCQUFULEdBQTJDO0FBQzVELFlBQU1DLE9BQU8sSUFBSUMsS0FBSixDQUFVQyxVQUFVQyxNQUFwQixDQUFiOztBQUVBO0FBQ0EsYUFBSyxJQUFJQyxJQUFJLENBQVIsRUFBV0MsSUFBSUgsVUFBVUMsTUFBOUIsRUFBc0NDLElBQUlDLENBQTFDLEVBQTZDLEVBQUVELENBQS9DLEVBQWtEO0FBQ2hESixlQUFLSSxDQUFMLElBQVVGLFVBQVVFLENBQVYsQ0FBVjtBQUNEOztBQUVELFlBQU1FLGFBQWFoQixnQkFBZ0JpQixPQUFuQztBQUNBLFlBQU1DLFNBQVMsSUFBSUYsV0FBV0csY0FBZixDQUE4QmQsYUFBOUIsRUFBNkNXLFdBQVdJLEdBQXhELENBQWY7O0FBRUEsZUFBTyxLQUFLQyx5QkFBTCxDQUErQkgsTUFBL0IsRUFBdUNSLElBQXZDLENBQVA7QUFDRCxPQVpEO0FBYUQsS0FkRCxNQWNPO0FBQ0xOLGlCQUFXSSxLQUFYLEdBQW1CLFNBQVNjLDBDQUFULEdBQXNEO0FBQ3ZFLFlBQU1aLE9BQU8sSUFBSUMsS0FBSixDQUFVQyxVQUFVQyxNQUFwQixDQUFiOztBQUVBO0FBQ0EsYUFBSyxJQUFJQyxJQUFJLENBQVIsRUFBV0MsSUFBSUgsVUFBVUMsTUFBOUIsRUFBc0NDLElBQUlDLENBQTFDLEVBQTZDLEVBQUVELENBQS9DLEVBQWtEO0FBQ2hESixlQUFLSSxDQUFMLElBQVVGLFVBQVVFLENBQVYsQ0FBVjtBQUNEOztBQUVELFlBQU1TLFVBQVUseUJBQVcsS0FBS0MsSUFBTCxFQUFYLENBQWhCO0FBQ0EsWUFBTVIsYUFBYWhCLGdCQUFnQnVCLE9BQWhCLEtBQTRCdkIsZ0JBQWdCaUIsT0FBL0Q7QUFDQSxZQUFNQyxTQUFTLElBQUlGLFdBQVdHLGNBQWYsQ0FBOEJkLGFBQTlCLEVBQTZDVyxXQUFXSSxHQUF4RCxDQUFmOztBQUVBLGVBQU8sS0FBS0MseUJBQUwsQ0FBK0JILE1BQS9CLEVBQXVDUixJQUF2QyxDQUFQO0FBQ0QsT0FiRDtBQWNEO0FBQ0YsR0FoQ0Q7QUFpQ0Q7O0FBRUQsU0FBU1QsY0FBVCxDQUF3QkgsS0FBeEIsRUFBK0I7QUFDN0IsTUFBSSxpQkFBRVEsVUFBRixDQUFhUixLQUFiLEtBQXVCLGlCQUFFUyxPQUFGLENBQVVULEtBQVYsQ0FBM0IsRUFBNkM7QUFDM0MsV0FBTztBQUNMbUIsZUFBU1EsNEJBQTRCM0IsS0FBNUI7QUFESixLQUFQO0FBR0QsR0FKRCxNQUlPO0FBQ0wsV0FBTyxpQkFBRTRCLFNBQUYsQ0FBWTVCLEtBQVosRUFBbUIyQiwyQkFBbkIsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU0EsMkJBQVQsQ0FBcUNFLElBQXJDLEVBQTJDO0FBQ3pDLE1BQUksaUJBQUVwQixPQUFGLENBQVVvQixJQUFWLENBQUosRUFBcUI7QUFDbkIsV0FBTztBQUNMUixzQkFBZ0JRLEtBQUssQ0FBTCxDQURYO0FBRUxQLFdBQUtPLEtBQUssQ0FBTDtBQUZBLEtBQVA7QUFJRCxHQUxELE1BS087QUFDTCxXQUFPO0FBQ0xSLHNCQUFnQlEsSUFEWDtBQUVMUCxXQUFLO0FBRkEsS0FBUDtBQUlEO0FBQ0YiLCJmaWxlIjoicXVlcnlCdWlsZGVyT3BlcmF0aW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7Z2V0RGlhbGVjdH0gZnJvbSAnLi4vLi4vdXRpbHMvZGJVdGlscyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHF1ZXJ5QnVpbGRlck9wZXJhdGlvbihpbnB1dCwgbmFtZSkge1xuICBjb25zdCBub3JtYWxpemVkSW5wdXQgPSBub3JtYWxpemVJbnB1dChpbnB1dCk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIHByb3BlcnR5LCBkZXNjcmlwdG9yKSB7XG4gICAgY29uc3Qgb3BlcmF0aW9uTmFtZSA9IG5hbWUgfHwgcHJvcGVydHk7XG4gICAgaWYgKF8uaXNGdW5jdGlvbihpbnB1dCkgfHwgXy5pc0FycmF5KGlucHV0KSkge1xuICAgICAgZGVzY3JpcHRvci52YWx1ZSA9IGZ1bmN0aW9uIGRlY29yYXRvciRxdWVyeUJ1aWxkZXJPcGVyYXRpb24oKSB7XG4gICAgICAgIGNvbnN0IGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCk7XG5cbiAgICAgICAgLy8gRG9uJ3QgdHVybiB0aGlzIGludG8gYSBmdW5jdGlvbi4gVGhpcyBuZWVkcyB0byBiZSBpbmxpbmUgZm9yIFY4IHRvIG9wdGltaXplIHRoaXMuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IGw7ICsraSkge1xuICAgICAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZXRob2REZXNjID0gbm9ybWFsaXplZElucHV0LmRlZmF1bHQ7XG4gICAgICAgIGNvbnN0IG1ldGhvZCA9IG5ldyBtZXRob2REZXNjLm9wZXJhdGlvbkNsYXNzKG9wZXJhdGlvbk5hbWUsIG1ldGhvZERlc2Mub3B0KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5jYWxsUXVlcnlCdWlsZGVyT3BlcmF0aW9uKG1ldGhvZCwgYXJncyk7XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gZGVjb3JhdG9yJHF1ZXJ5QnVpbGRlck9wZXJhdGlvbldpdGhEaWFsZWN0KCkge1xuICAgICAgICBjb25zdCBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgpO1xuXG4gICAgICAgIC8vIERvbid0IHR1cm4gdGhpcyBpbnRvIGEgZnVuY3Rpb24uIFRoaXMgbmVlZHMgdG8gYmUgaW5saW5lIGZvciBWOCB0byBvcHRpbWl6ZSB0aGlzLlxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGlhbGVjdCA9IGdldERpYWxlY3QodGhpcy5rbmV4KCkpO1xuICAgICAgICBjb25zdCBtZXRob2REZXNjID0gbm9ybWFsaXplZElucHV0W2RpYWxlY3RdIHx8IG5vcm1hbGl6ZWRJbnB1dC5kZWZhdWx0O1xuICAgICAgICBjb25zdCBtZXRob2QgPSBuZXcgbWV0aG9kRGVzYy5vcGVyYXRpb25DbGFzcyhvcGVyYXRpb25OYW1lLCBtZXRob2REZXNjLm9wdCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuY2FsbFF1ZXJ5QnVpbGRlck9wZXJhdGlvbihtZXRob2QsIGFyZ3MpO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUlucHV0KGlucHV0KSB7XG4gIGlmIChfLmlzRnVuY3Rpb24oaW5wdXQpIHx8IF8uaXNBcnJheShpbnB1dCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGVmYXVsdDogbm9ybWFsaXplUXVlcnlPcGVyYXRpb25EZXNjKGlucHV0KVxuICAgIH07XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIF8ubWFwVmFsdWVzKGlucHV0LCBub3JtYWxpemVRdWVyeU9wZXJhdGlvbkRlc2MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVF1ZXJ5T3BlcmF0aW9uRGVzYyhkZXNjKSB7XG4gIGlmIChfLmlzQXJyYXkoZGVzYykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgb3BlcmF0aW9uQ2xhc3M6IGRlc2NbMF0sXG4gICAgICBvcHQ6IGRlc2NbMV1cbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB7XG4gICAgICBvcGVyYXRpb25DbGFzczogZGVzYyxcbiAgICAgIG9wdDoge31cbiAgICB9O1xuICB9XG59Il19