From 458cff32fdb62e4b6ae240a7b88986419bcef3da Mon Sep 17 00:00:00 2001 From: Palash Gupta Date: Fri, 18 Aug 2023 09:18:50 +0530 Subject: [PATCH] feat: regex operator is added in the string type for all data source (#3362) --- frontend/src/constants/queryBuilder.ts | 4 ++++ .../QueryBuilder/filters/QueryBuilderSearch/utils.ts | 11 +++++++++-- frontend/src/hooks/queryBuilder/useOperatorType.ts | 2 ++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/frontend/src/constants/queryBuilder.ts b/frontend/src/constants/queryBuilder.ts index 515be4d080..6b3e6f0eb6 100644 --- a/frontend/src/constants/queryBuilder.ts +++ b/frontend/src/constants/queryBuilder.ts @@ -260,6 +260,8 @@ export const OPERATORS = { NIN: 'NOT_IN', LIKE: 'LIKE', NLIKE: 'NOT_LIKE', + REGEX: 'REGEX', + NREGEX: 'NOT_REGEX', '=': '=', '!=': '!=', EXISTS: 'EXISTS', @@ -284,6 +286,8 @@ export const QUERY_BUILDER_OPERATORS_BY_TYPES = { OPERATORS.NOT_CONTAINS, OPERATORS.EXISTS, OPERATORS.NOT_EXISTS, + OPERATORS.REGEX, + OPERATORS.NREGEX, ], int64: [ OPERATORS['='], diff --git a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/utils.ts b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/utils.ts index 9364d5b042..7db0e6f552 100644 --- a/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/utils.ts +++ b/frontend/src/container/QueryBuilder/filters/QueryBuilderSearch/utils.ts @@ -1,10 +1,9 @@ import { OPERATORS } from 'constants/queryBuilder'; -// eslint-disable-next-line import/no-extraneous-dependencies import * as Papa from 'papaparse'; import { orderByValueDelimiter } from '../OrderByFilter/utils'; -export const tagRegexp = /([a-zA-Z0-9_.:@$()\-/\\]+)\s*(!=|=|<=|<|>=|>|IN|NOT_IN|LIKE|NOT_LIKE|EXISTS|NOT_EXISTS|CONTAINS|NOT_CONTAINS)\s*([\s\S]*)/g; +export const tagRegexp = /([a-zA-Z0-9_.:@$()\-/\\]+)\s*(!=|=|<=|<|>=|>|IN|NOT_IN|LIKE|NOT_LIKE|REGEX|NOT_REGEX|EXISTS|NOT_EXISTS|CONTAINS|NOT_CONTAINS)\s*([\s\S]*)/g; export function isInNInOperator(value: string): boolean { return value === OPERATORS.IN || value === OPERATORS.NIN; @@ -56,6 +55,10 @@ export function getOperatorValue(op: string): string { return 'in'; case 'NOT_IN': return 'nin'; + case OPERATORS.REGEX: + return 'regex'; + case OPERATORS.NREGEX: + return 'nregex'; case 'LIKE': return 'like'; case 'NOT_LIKE': @@ -81,6 +84,10 @@ export function getOperatorFromValue(op: string): string { return 'NOT_IN'; case 'like': return 'LIKE'; + case 'regex': + return OPERATORS.REGEX; + case 'nregex': + return OPERATORS.NREGEX; case 'nlike': return 'NOT_LIKE'; case 'exists': diff --git a/frontend/src/hooks/queryBuilder/useOperatorType.ts b/frontend/src/hooks/queryBuilder/useOperatorType.ts index 50cb318748..45049af206 100644 --- a/frontend/src/hooks/queryBuilder/useOperatorType.ts +++ b/frontend/src/hooks/queryBuilder/useOperatorType.ts @@ -17,6 +17,8 @@ const operatorTypeMapper: Record = { [OPERATORS['>']]: 'SINGLE_VALUE', [OPERATORS.LIKE]: 'SINGLE_VALUE', [OPERATORS.NLIKE]: 'SINGLE_VALUE', + [OPERATORS.REGEX]: 'SINGLE_VALUE', + [OPERATORS.NREGEX]: 'SINGLE_VALUE', [OPERATORS.CONTAINS]: 'SINGLE_VALUE', [OPERATORS.NOT_CONTAINS]: 'SINGLE_VALUE', [OPERATORS['=']]: 'SINGLE_VALUE',