cheetah-framework
Version:
Cheetah Framework JS used in all our applications
81 lines (70 loc) • 2.17 kB
JavaScript
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 = {
[]: BaseValueComponent,
[]: BaseValueComponent,
[]: BaseValueComponent,
[]: BaseValueComponent,
[]: ArrayableValueComponent,
[]: ArrayableValueComponent,
[]: BaseValueComponent,
[]: BaseValueComponent,
[]: BaseValueComponent,
[]: BaseValueComponent,
[]: null,
[]: null,
[]: AggregatorValueComponent,
[]: null,
[]: null,
[]: AggregatorValueComponent,
[]: AggregatorValueComponent
}
}
getValueComponent (criterion) {
this.registerComponentMap()
return this.operatorToValueComponentMap[criterion.builder_operator]
}
}
export default new QueryBuilderHelper()
export {
OPERATORS,
BUILDER_OPERATORS,
RELATION_TYPE_OPERATORS
}