-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework static filters #201
Conversation
Pull Request Test Coverage Report for Build 2842092570
💛 - Coveralls |
@@ -39,7 +38,7 @@ export interface VerticalSearchRequest extends SearchRequest { | |||
/** Enables session tracking. */ | |||
sessionTrackingEnabled?: boolean, | |||
/** The static filters to apply to the search. */ | |||
staticFilters?: CombinedFilter | Filter, | |||
staticFilters?: StaticFilter, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This feels a bit odd, the attribute name is plural, but we only allow a singular value.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree, this looks a little weird. Although, this was the case before also where we accepted a single value (either a Filter
or a CombinedFilter
) for the plural staticFilters
. It was just slightly obscured because of the union type.
Would it make sense to rename the attribute to staticFilter
? Because that's what the user is giving us; it's just that they can combine a bunch of field value filters together if they want to in their one static filter
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, renaming to static filter sounds good!
Are the main changes
? |
yes, the main things we wanted were
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this lgtm! not sure if other people have gotten to take a look
## Version 2.0.0 ### Changes - `additionalQueryParameter` is now a public field in `SearchConfig` models (#217) ### Breaking Changes - Updated default and sandbox URL endpoints from `../answers/..` to `../search/..` as part of rebranding process (#196 ) - Restructured StaticFilters models for better developer experience and enforce proper restriction in the kind of combinations of filters supported by the backend - Now, static filters can be either a field value filter or a nested object that is composed by combining field value filters. (#201 ) - `ConjunctionStaticFilter` and `DisjunctionStaticFilter` models were created to reflect such limitation. For example, ANDs of ORs combination is allowed, ORs of ANDs combination is not allowed. (#204 ) - Updated `FieldValueDirectAnswer` model to properly handle different `value` types. Previously, FieldValueDirectAnswer interface enforces that the `value` field will always be of type `string`. Now, `FieldValueDirectAnswer` is a union type of predefined interfaces with known `value` type and `UnknownFieldValueDirectAnswer` with a generic `value` type for other `fieldType` outside of `BuiltInFieldType`. (#200 #202 ) - The newly added built-in interfaces can be found in the document page [**here**](https://github.com/yext/search-core/blob/develop/docs/search-core.fieldvaluedirectanswer.md) (#206 #208 #210 #211 #205 #209 #203 #220 ) - Narrow down `FeaturedSnippetDirectAnswer` TypeScript model to be a union type of `MultiLineTextSnippetDirectAnswer` and `RichTextSnippetDirectAnswer` as a featured snippet direct answer can only be of fieldType `multi_line_text` or `rich_text`. (#207 #212 ) - All exports marked as `@deprecated` in previous version(s) as part of the rebranding process is now removed in V2 (#216 ) - For more details, the deprecated identifiers are listed in [v1.8 release notes](https://github.com/yext/search-core/releases/tag/v1.8.0)
This PR reworks static filters to provide a better developer experience. A new
StaticFilters
model is added that replaces the existingCombinedFilter
.Filter
is renamed toFieldValueFilter
in order to more accurately describe what the object represents. Now static filters can be either a field value filter or a nested object that is composed by combining field value filters. Also, I added Jest tests for some edge cases when serializing static filters.J=SLAP-2325
TEST=auto, manual
See that the new and existing Jest tests pass. Spin up the test-site and see that requests can be successfully fired when specifying simple or nested static filters and the correct response is received.