Skip to content

Commit

Permalink
revert BED-4662 PR 767 (#797)
Browse files Browse the repository at this point in the history
  • Loading branch information
mvlipka authored Aug 16, 2024
1 parent 84ceaae commit c93425e
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 45 deletions.
24 changes: 4 additions & 20 deletions cmd/api/src/model/filter.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,13 @@ const (
LessThanOrEquals FilterOperator = "lte"
Equals FilterOperator = "eq"
NotEquals FilterOperator = "neq"
Contains FilterOperator = "in"

GreaterThanSymbol string = ">"
GreaterThanOrEqualsSymbol string = ">="
LessThanSymbol string = "<"
LessThanOrEqualsSymbol string = "<="
EqualsSymbol string = "="
NotEqualsSymbol string = "<>"
ContainsSymbol string = "like"

TrueString = "true"
FalseString = "false"
Expand Down Expand Up @@ -81,9 +79,6 @@ func ParseFilterOperator(raw string) (FilterOperator, error) {
case NotEquals:
return NotEquals, nil

case Contains:
return Contains, nil

default:
return "", fmt.Errorf("unknown query parameter filter predicate: %s", raw)
}
Expand Down Expand Up @@ -170,25 +165,14 @@ func (s QueryParameterFilterMap) BuildSQLFilter() (SQLFilter, error) {
predicate = EqualsSymbol
case NotEquals:
predicate = NotEqualsSymbol
case Contains:
predicate = ContainsSymbol
default:
return SQLFilter{}, fmt.Errorf("invalid filter predicate specified")
}

switch predicate {
case ContainsSymbol:
result.WriteString(filter.Name)
result.WriteString(" ")
result.WriteString(predicate)
filter.Value = fmt.Sprintf("%%%s%%", filter.Value)
result.WriteString(" lower(?)")
default:
result.WriteString(filter.Name)
result.WriteString(" ")
result.WriteString(predicate)
result.WriteString(" ?")
}
result.WriteString(filter.Name)
result.WriteString(" ")
result.WriteString(predicate)
result.WriteString(" ?")

params = append(params, filter.Value)
firstFilter = false
Expand Down
27 changes: 9 additions & 18 deletions cmd/api/src/model/filter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,28 +76,19 @@ func TestModel_BuildSQLFilter_Success(t *testing.T) {
IsStringData: false,
}

stringContains := model.QueryParameterFilter{
Name: "filtercolumn6",
Operator: model.Contains,
Value: "something",
IsStringData: true,
}

expectedResults := map[string]model.SQLFilter{
"numericMin": {SQLString: fmt.Sprintf("%s > ?", numericMin.Name), Params: []any{numericMin.Value}},
"numericMax": {SQLString: fmt.Sprintf("%s < ?", numericMax.Name), Params: []any{numericMax.Value}},
"stringValue": {SQLString: fmt.Sprintf("%s = ?", stringValue.Name), Params: []any{stringValue.Value}},
"boolEquals": {SQLString: fmt.Sprintf("%s = ?", boolEquals.Name), Params: []any{boolEquals.Value}},
"boolNotEquals": {SQLString: fmt.Sprintf("%s <> ?", boolNotEquals.Name), Params: []any{boolNotEquals.Value}},
"stringContains": {SQLString: fmt.Sprintf("%s like lower(?)", stringContains.Name), Params: []any{stringContains.Value}},
"numericMin": {SQLString: fmt.Sprintf("%s > ?", numericMin.Name), Params: []any{numericMin.Value}},
"numericMax": {SQLString: fmt.Sprintf("%s < ?", numericMax.Name), Params: []any{numericMax.Value}},
"stringValue": {SQLString: fmt.Sprintf("%s = ?", stringValue.Name), Params: []any{stringValue.Value}},
"boolEquals": {SQLString: fmt.Sprintf("%s = ?", boolEquals.Name), Params: []any{boolEquals.Value}},
"boolNotEquals": {SQLString: fmt.Sprintf("%s <> ?", boolNotEquals.Name), Params: []any{boolNotEquals.Value}},
}

queryParameterFilterMap := model.QueryParameterFilterMap{
numericMax.Name: model.QueryParameterFilters{numericMin, numericMax},
stringValue.Name: model.QueryParameterFilters{stringValue},
boolEquals.Name: model.QueryParameterFilters{boolEquals},
boolNotEquals.Name: model.QueryParameterFilters{boolNotEquals},
stringContains.Name: model.QueryParameterFilters{stringContains},
numericMax.Name: model.QueryParameterFilters{numericMin, numericMax},
stringValue.Name: model.QueryParameterFilters{stringValue},
boolEquals.Name: model.QueryParameterFilters{boolEquals},
boolNotEquals.Name: model.QueryParameterFilters{boolNotEquals},
}

result, err := queryParameterFilterMap.BuildSQLFilter()
Expand Down
2 changes: 1 addition & 1 deletion cmd/api/src/model/saved_queries.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (s SavedQueries) ValidFilters() map[string][]FilterOperator {
"user_id": {Equals, NotEquals},
"name": {Equals, NotEquals},
"query": {Equals, NotEquals},
"description": {Equals, NotEquals, Contains},
"description": {Equals, NotEquals},
}
}

Expand Down
7 changes: 1 addition & 6 deletions cmd/api/src/model/saved_queries_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,12 +41,7 @@ func TestSavedQueries_ValidFilters(t *testing.T) {
for _, column := range []string{"user_id", "name", "query", "description"} {
operators, ok := validFilters[column]
require.True(t, ok)
switch column {
case "description":
require.Equal(t, 3, len(operators))
default:
require.Equal(t, 2, len(operators))
}
require.Equal(t, 2, len(operators))
}
}

Expand Down

0 comments on commit c93425e

Please sign in to comment.