-
Notifications
You must be signed in to change notification settings - Fork 50
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
[ENHANCEMENT] Add query param 'metadata_only' on almost all query endpoints #1993
Conversation
…points Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
29d35cb
to
1aeae1d
Compare
@@ -21,6 +21,7 @@ import ( | |||
) | |||
|
|||
type Query interface { | |||
GetMetadataOnlyQueryParam() bool |
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.
Let's open the debate that we all expect: should it be metadata_only
or something else?
Food for think:
What if the default was to actually give only the metadata to prevent from dumb requests. You could have full=true for example in all the queries that actually want details
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.
partial, full, skip_spec, ignore_spec, ...
Depends on the the default behavior too, "full=true" will not work with the current implem
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.
Yes that's what I'm saying. Changing the default behaviour to by default having full=false would in a sense give a message that if you use full=true you don't use default and don't complain if it fails or take time to answer, or is paginated.
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.
When you get the list of data with no query parameter, you won't expect a partial response data.
What we can do is to provide a pagination so you cannot get everything excepting if you explicitly say it.
metadata_only
is at least explicitly saying you will only get the metadata and nothing else.
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.
but before including a pagination, I want to make everything to be able to get all data without crashing Perses.
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.
Okay, just wanted to make sure we explore all the possibilities.
I think I'd tend to be in favor of an API that by default gives everything and light than something very detailed and potentially paginated in the future. But at the end as long as the light mode is available I'm good with any of the default behaviour.
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.
Pagination for the win 👍🏽
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.
Let's make UI functions more generic so we can request whatever we want + add api e2e tests with query param
Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
Signed-off-by: Augustin Husson <husson.augustin@gmail.com>
405758d
to
6fa3f21
Compare
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 PR is introducing the query param
metadata_only
on every endpoint excepting thedatasource
one.On the datasource endpoint, the query param
default
andkind
are used to filter the list. But for that we need to have access to the spec.On the home page, when it's loading ~1k dashboards, it takes around 3s to load. With this PR it's taking 500ms.