[Issue #1493] Update search schema to disallow empty filters #1534
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Fixes #1493
Time to review: 5 mins
Changes proposed
Updated search schema logic to disallow:
one_of
listsContext for reviewers
These changes remove a few edge cases that have undefined / difficult to define behavior if we allow them (ie. what do we do if a list is empty,
opportunity_status in [ ]
). Rather than try to sort out what the behavior might mean / modify a users search request and interpret what we think they probably mean, we don't allow that type of request and chalk it up to user error in constructing a request.Note that this does not modify the behavior of just not passing filters, that's still perfectly fine, we just want to avoid being passed filters that are half-built. See the additional section below for what is / isn't allowed.
Additional information
An example request looks like:
Technically only the pagination is required, and so you can also pass us:
Error cases
However, the following are now no longer allowed.
An empty list
logically this wouldn't ever return results as the intersection of an empty set always is nothing
Which returns:
An empty set of filter rules for a field
this technically doesn't cause issues, but lets us be more flexible in our implementation
Which returns: