sequelize
Version:
Multi dialect ORM for Node.JS
85 lines (76 loc) • 1.9 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 = Object.assign({}, 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;