sequelize-ibmi
Version:
Multi dialect ORM for Node.JS
86 lines (77 loc) • 1.91 kB
JavaScript
'use strict';
const _ = require('lodash');
const Op = require('../../../operators');
const Utils = require('../../../utils');
const OperatorHelpers = {
OperatorMap: {
[]: '=',
[]: '!=',
[]: '>=',
[]: '>',
[]: '<=',
[]: '<',
[]: 'IS NOT',
[]: 'IS',
[]: 'IN',
[]: 'NOT IN',
[]: 'LIKE',
[]: 'NOT LIKE',
[]: 'ILIKE',
[]: 'NOT ILIKE',
[]: 'LIKE',
[]: 'LIKE',
[]: 'LIKE',
[]: '~',
[]: '!~',
[]: '~*',
[]: '!~*',
[]: 'BETWEEN',
[]: 'NOT BETWEEN',
[]: '&&',
[]: '@>',
[]: '<@',
[]: '-|-',
[]: '<<',
[]: '>>',
[]: '&<',
[]: '&>',
[]: 'ANY',
[]: 'ALL',
[]: ' AND ',
[]: ' OR ',
[]: 'COL',
[]: '$$PLACEHOLDER$$',
[]: '@@'
},
OperatorsAliasMap: {},
setOperatorsAliases(aliases) {
if (!aliases || _.isEmpty(aliases)) {
this.OperatorsAliasMap = false;
} else {
this.OperatorsAliasMap = { ...aliases };
}
},
_replaceAliases(orig) {
const obj = {};
if (!this.OperatorsAliasMap) {
return orig;
}
Utils.getOperators(orig).forEach(op => {
const item = orig[op];
if (_.isPlainObject(item)) {
obj[op] = this._replaceAliases(item);
} else {
obj[op] = item;
}
});
_.forOwn(orig, (item, prop) => {
prop = this.OperatorsAliasMap[prop] || prop;
if (_.isPlainObject(item)) {
item = this._replaceAliases(item);
}
obj[prop] = item;
});
return obj;
}
};
module.exports = OperatorHelpers;