UNPKG

cheetah-framework

Version:

Cheetah Framework JS used in all our applications

81 lines (70 loc) 2.17 kB
const BUILDER_OPERATORS = { EQUAL: '=', NOT_EQUAL: '<>', LIKE: 'like', NOT_LIKE: 'not_like', IN: 'in', NOT_IN: 'not_in', LT: '<', LTE: '<=', GT: '>', GTE: '>=', NULL: 'null', NOT_NULL: 'not_null', EXIST: 'exist', NOT_EXIST: 'not_exist', COUNT: 'count', MAX: 'max', MIN: 'min' } const RELATION_TYPE_OPERATORS = { WITH: 'with', WITHOUT: 'without' } const OPERATORS = { AND: 'and', OR: 'or' } class QueryBuilderHelper { constructor () { this.operatorToValueComponentMap = null } registerComponentMap () { if (this.operatorToValueComponentMap !== null) { return } // Here we use require to fix circular dependency issues const BaseValueComponent = require('@cheetah/components/QueryBuilder/value/Base').default const ArrayableValueComponent = require('@cheetah/components/QueryBuilder/value/Arrayable').default const AggregatorValueComponent = require('@cheetah/components/QueryBuilder/value/Aggregator').default this.operatorToValueComponentMap = { [BUILDER_OPERATORS.EQUAL]: BaseValueComponent, [BUILDER_OPERATORS.NOT_EQUAL]: BaseValueComponent, [BUILDER_OPERATORS.LIKE]: BaseValueComponent, [BUILDER_OPERATORS.NOT_LIKE]: BaseValueComponent, [BUILDER_OPERATORS.IN]: ArrayableValueComponent, [BUILDER_OPERATORS.NOT_IN]: ArrayableValueComponent, [BUILDER_OPERATORS.LT]: BaseValueComponent, [BUILDER_OPERATORS.LTE]: BaseValueComponent, [BUILDER_OPERATORS.GT]: BaseValueComponent, [BUILDER_OPERATORS.GTE]: BaseValueComponent, [BUILDER_OPERATORS.NULL]: null, [BUILDER_OPERATORS.NOT_NULL]: null, [BUILDER_OPERATORS.COUNT]: AggregatorValueComponent, [BUILDER_OPERATORS.EXIST]: null, [BUILDER_OPERATORS.NOT_EXIST]: null, [BUILDER_OPERATORS.MAX]: AggregatorValueComponent, [BUILDER_OPERATORS.MIN]: AggregatorValueComponent } } getValueComponent (criterion) { this.registerComponentMap() return this.operatorToValueComponentMap[criterion.builder_operator] } } export default new QueryBuilderHelper() export { OPERATORS, BUILDER_OPERATORS, RELATION_TYPE_OPERATORS }