diff --git a/internal/store/postgres/org_billing_repository.go b/internal/store/postgres/org_billing_repository.go index 8dd5f9527..eb9ab79bf 100644 --- a/internal/store/postgres/org_billing_repository.go +++ b/internal/store/postgres/org_billing_repository.go @@ -22,6 +22,8 @@ const ( OPERATOR_NOT_IN = "notin" OPERATOR_LIKE = "like" OPERATOR_NOT_LIKE = "notlike" + OPERATOR_ILIKE = "ilike" + OPERATOR_NOT_ILIKE = "notilike" ) const ( @@ -415,6 +417,10 @@ func processStringDataType(filter rql.Filter, query *goqu.SelectDataset) *goqu.S case OPERATOR_NOT_LIKE: // some semi string sql types like UUID require casting to text to support like operator query = query.Where(goqu.L(fmt.Sprintf(`"%s"::TEXT NOT LIKE '%s'`, filter.Name, filter.Value.(string)))) + case OPERATOR_ILIKE: + query = query.Where(goqu.L(fmt.Sprintf(`"%s"::TEXT ILIKE '%s'`, filter.Name, filter.Value.(string)))) + case OPERATOR_NOT_ILIKE: + query = query.Where(goqu.L(fmt.Sprintf(`"%s"::TEXT NOT ILIKE '%s'`, filter.Name, filter.Value.(string)))) default: query = query.Where(goqu.Ex{filter.Name: goqu.Op{filter.Operator: filter.Value.(string)}}) } diff --git a/web/apps/admin/src/utils/transform-query.ts b/web/apps/admin/src/utils/transform-query.ts index 0ce9d3b81..3b1289c3f 100644 --- a/web/apps/admin/src/utils/transform-query.ts +++ b/web/apps/admin/src/utils/transform-query.ts @@ -54,18 +54,11 @@ function transformFilter( value = convertFilterValue(filter.value); } - // TODO: add support for ilike in RQL and backend - // Transform ilike operator to like only for string values - const operator = - filter.operator === "ilike" && value.case === "stringValue" - ? "like" - : filter.operator; - const fieldName = fieldNameMapping?.[filter.name] ?? filter.name; return create(RQLFilterSchema, { name: fieldName, - operator, + operator: filter.operator, value, }); } diff --git a/web/sdk/admin/utils/transform-query.ts b/web/sdk/admin/utils/transform-query.ts index 1faed02b1..9d46e3a21 100644 --- a/web/sdk/admin/utils/transform-query.ts +++ b/web/sdk/admin/utils/transform-query.ts @@ -57,18 +57,11 @@ function transformFilter( value = convertFilterValue(filter.value); } - // TODO: add support for ilike in RQL and backend - // Transform ilike operator to like only for string values - const operator = - filter.operator === "ilike" && value.case === "stringValue" - ? "like" - : filter.operator; - const fieldName = fieldNameMapping?.[filter.name] ?? filter.name; return create(RQLFilterSchema, { name: fieldName, - operator, + operator: filter.operator, value, }); }