1234567891011121314151617181920212223242526272829303132 |
- const ObjectionToKnexConvertingOperation = require('./ObjectionToKnexConvertingOperation');
- class WhereCompositeOperation extends ObjectionToKnexConvertingOperation {
- onBuildKnex(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}`);
- }
- }
- build(knexBuilder, cols, op, values) {
- const colsIsArray = Array.isArray(cols);
- const 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 (let 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`);
- }
- }
- }
- module.exports = WhereCompositeOperation;
|