mirror of
https://github.com/rancher/steve.git
synced 2025-09-12 04:39:05 +00:00
Finish parsing indirect statements: update the returned requirement.
This commit is contained in:
@@ -73,11 +73,14 @@ func k8sRequirementToOrFilter(requirement queryparser.Requirement) (sqltypes.Fil
|
||||
values := requirement.Values()
|
||||
queryFields := splitQuery(requirement.Key())
|
||||
op, usePartialMatch, err := k8sOpToRancherOp(requirement.Operator())
|
||||
isIndirect, indirectFields := requirement.IndirectInfo()
|
||||
return sqltypes.Filter{
|
||||
Field: queryFields,
|
||||
Matches: values,
|
||||
Op: op,
|
||||
Partial: usePartialMatch,
|
||||
Field: queryFields,
|
||||
Matches: values,
|
||||
Op: op,
|
||||
Partial: usePartialMatch,
|
||||
IsIndirect: isIndirect,
|
||||
IndirectFields: indirectFields,
|
||||
}, err
|
||||
}
|
||||
|
||||
|
@@ -370,6 +370,33 @@ func TestParseQuery(t *testing.T) {
|
||||
},
|
||||
},
|
||||
})
|
||||
tests = append(tests, testCase{
|
||||
description: "ParseQuery() with an indirect labels filter param should create an indirect labels-specific filter.",
|
||||
req: &types.APIRequest{
|
||||
Request: &http.Request{
|
||||
URL: &url.URL{RawQuery: "filter=metadata.labels[grover.example.com/fish]=>[_v1][Foods][foodCode][country]=japan"},
|
||||
},
|
||||
},
|
||||
expectedLO: sqltypes.ListOptions{
|
||||
ChunkSize: defaultLimit,
|
||||
Filters: []sqltypes.OrFilter{
|
||||
{
|
||||
Filters: []sqltypes.Filter{
|
||||
{
|
||||
Field: []string{"metadata", "labels", "grover.example.com/fish"},
|
||||
Matches: []string{"japan"},
|
||||
Op: sqltypes.Eq,
|
||||
IsIndirect: true,
|
||||
IndirectFields: []string{"_v1", "Foods", "foodCode", "country"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
Pagination: sqltypes.Pagination{
|
||||
Page: 1,
|
||||
},
|
||||
},
|
||||
})
|
||||
tests = append(tests, testCase{
|
||||
description: "ParseQuery() with multiple filter params, should include multiple or filters.",
|
||||
req: &types.APIRequest{
|
||||
|
Reference in New Issue
Block a user