-
Notifications
You must be signed in to change notification settings - Fork 8.3k
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
[InfraUI] Remove (to be deprecated) rest_total_hits_as_int parameter #30826
[InfraUI] Remove (to be deprecated) rest_total_hits_as_int parameter #30826
Conversation
Change checkValidNode response parsing Update type
Pinging @elastic/infrastructure-ui |
💚 Build Succeeded |
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.
.____ ________________________
| | / _____/\__ ___/ \
| | / \ ___ | | / \ / \
| |__\ \_\ \ | |/ Y \
|_______ \______ / |____|\____|__ /
\/ \/ \/
I added one note but it's not required to merge. You can merge without it but I wanted to get your thoughts on the idea.
return (await search(params)).hits.total > 0; | ||
|
||
const result = await search(params); | ||
return result && result.hits && result.hits.total && result.hits.total.value > 0; |
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've been struggling with things like this too where we need to grab a value off some deeply nested object that has optional parts all the way down 🐢. I wonder if we shouldn't just standardize on using Lodash get
for things like this since we are only concerned with the value at the end of the path. That's was standard practice at one point in time for the Kibana team. I only started using the same pattern as you when I started with Typescript.
const result = await search(params)
const value = get(result, 'hits.total.value', 0);
return value > 0;
You don't need to make this change, unless you like it. Technically they are both the same so I will let you decide.
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.
The APM team has implemented some typesafer getter pattern which we might want to copy: https://github.com/elastic/kibana/blob/master/x-pack/plugins/apm/common/idx.ts
example usage here:
kibana/x-pack/plugins/apm/public/components/app/ErrorGroupDetails/DetailView/index.tsx
Line 116 in d9735bc
idx(error, _ => _.context.page.url) || |
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.
We should settle on something because personally I don't like typing result & result.total & result.total.value
, I like editing it even less, especially when the structure changes.
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.
indeed... the idx
(which could be named better) has a few nice properties:
- preserves the return type
- auto-completion in the accessor
- simple, local implementation
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.
Yep, I agree it's annoying and if we can decide on a standardised solution (be it Lodash's get
, APM's idx
, or a tweaked custom function of our own) that'd be great. I'll merge this as is for now as it's managed to get a green build amid the CI issues. But I'll add an agenda issue for the next Infrastructure & Service Monitoring UI Sync meeting and we can decide which to use.
…35792) * [Infra UI] Add new graphql endpoint for snapshot data (#34264) * Add new graphql endpoint for snapshot data * Polishing. * Keep type generic that is used outside snapshots * Keep one more generic type generic * Use camelCase for consistency. * Refine type names * Add return types. * Use idiomatic javascript. * Factor out getAllCompositeAggregationData<T>() * Refine naming. * More idiomatic JavaScript, more types. * Use pre-8.x response format (see also #30826)
Friendly reminder: Looks like this PR hasn’t been backported yet. |
Friendly reminder: Looks like this PR hasn’t been backported yet. |
Summary
Addresses: #29435
Overview: Removes our use of the to be removed Elasticsearch
rest_total_hits_as_int=true
parameter.Checklist
Use
strikethroughsto remove checklist items you don't feel are applicable to this PR.[ ] This was checked for cross-browser compatibility, including a check against IE11[ ] Any text added follows EUI's writing guidelines, uses sentence case text and includes i18n support[ ] Documentation was added for features that require explanation or tutorials[ ] Unit or functional tests were updated or added to match the most common scenarios[ ] This was checked for keyboard-only and screenreader accessibility