API Reference Source

lib/dialects/abstract/query-generator/operators.js

  1. 'use strict';
  2.  
  3. const _ = require('lodash');
  4. const Op = require('../../../operators');
  5. const Utils = require('../../../utils');
  6.  
  7. const OperatorHelpers = {
  8. OperatorMap: {
  9. [Op.eq]: '=',
  10. [Op.ne]: '!=',
  11. [Op.gte]: '>=',
  12. [Op.gt]: '>',
  13. [Op.lte]: '<=',
  14. [Op.lt]: '<',
  15. [Op.not]: 'IS NOT',
  16. [Op.is]: 'IS',
  17. [Op.in]: 'IN',
  18. [Op.notIn]: 'NOT IN',
  19. [Op.like]: 'LIKE',
  20. [Op.notLike]: 'NOT LIKE',
  21. [Op.iLike]: 'ILIKE',
  22. [Op.notILike]: 'NOT ILIKE',
  23. [Op.startsWith]: 'LIKE',
  24. [Op.endsWith]: 'LIKE',
  25. [Op.substring]: 'LIKE',
  26. [Op.regexp]: '~',
  27. [Op.notRegexp]: '!~',
  28. [Op.iRegexp]: '~*',
  29. [Op.notIRegexp]: '!~*',
  30. [Op.between]: 'BETWEEN',
  31. [Op.notBetween]: 'NOT BETWEEN',
  32. [Op.overlap]: '&&',
  33. [Op.contains]: '@>',
  34. [Op.contained]: '<@',
  35. [Op.adjacent]: '-|-',
  36. [Op.strictLeft]: '<<',
  37. [Op.strictRight]: '>>',
  38. [Op.noExtendRight]: '&<',
  39. [Op.noExtendLeft]: '&>',
  40. [Op.any]: 'ANY',
  41. [Op.all]: 'ALL',
  42. [Op.and]: ' AND ',
  43. [Op.or]: ' OR ',
  44. [Op.col]: 'COL',
  45. [Op.placeholder]: '$$PLACEHOLDER$$'
  46. },
  47.  
  48. OperatorsAliasMap: {},
  49.  
  50. setOperatorsAliases(aliases) {
  51. if (!aliases || _.isEmpty(aliases)) {
  52. this.OperatorsAliasMap = false;
  53. } else {
  54. this.OperatorsAliasMap = Object.assign({}, aliases);
  55. }
  56. },
  57.  
  58. _replaceAliases(orig) {
  59. const obj = {};
  60. if (!this.OperatorsAliasMap) {
  61. return orig;
  62. }
  63.  
  64. Utils.getOperators(orig).forEach(op => {
  65. const item = orig[op];
  66. if (_.isPlainObject(item)) {
  67. obj[op] = this._replaceAliases(item);
  68. } else {
  69. obj[op] = item;
  70. }
  71. });
  72.  
  73. _.forOwn(orig, (item, prop) => {
  74. prop = this.OperatorsAliasMap[prop] || prop;
  75. if (_.isPlainObject(item)) {
  76. item = this._replaceAliases(item);
  77. }
  78. obj[prop] = item;
  79. });
  80. return obj;
  81. }
  82. };
  83.  
  84. module.exports = OperatorHelpers;