12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- 'use strict';
- const _ = require('lodash');
- const Op = require('../../../operators');
- const Utils = require('../../../utils');
- const OperatorHelpers = {
- OperatorMap: {
- [Op.eq]: '=',
- [Op.ne]: '!=',
- [Op.gte]: '>=',
- [Op.gt]: '>',
- [Op.lte]: '<=',
- [Op.lt]: '<',
- [Op.not]: 'IS NOT',
- [Op.is]: 'IS',
- [Op.in]: 'IN',
- [Op.notIn]: 'NOT IN',
- [Op.like]: 'LIKE',
- [Op.notLike]: 'NOT LIKE',
- [Op.iLike]: 'ILIKE',
- [Op.notILike]: 'NOT ILIKE',
- [Op.startsWith]: 'LIKE',
- [Op.endsWith]: 'LIKE',
- [Op.substring]: 'LIKE',
- [Op.regexp]: '~',
- [Op.notRegexp]: '!~',
- [Op.iRegexp]: '~*',
- [Op.notIRegexp]: '!~*',
- [Op.between]: 'BETWEEN',
- [Op.notBetween]: 'NOT BETWEEN',
- [Op.overlap]: '&&',
- [Op.contains]: '@>',
- [Op.contained]: '<@',
- [Op.adjacent]: '-|-',
- [Op.strictLeft]: '<<',
- [Op.strictRight]: '>>',
- [Op.noExtendRight]: '&<',
- [Op.noExtendLeft]: '&>',
- [Op.any]: 'ANY',
- [Op.all]: 'ALL',
- [Op.and]: ' AND ',
- [Op.or]: ' OR ',
- [Op.col]: 'COL',
- [Op.placeholder]: '$$PLACEHOLDER$$',
- [Op.match]: '@@'
- },
- 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;
|