-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Add pagination support to GraphQL-based tools #683
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
base: main
Are you sure you want to change the base?
Conversation
ListDiscussions
A downside of using cursor-based pagination in GraphQL is that there is no way of 'skipping' pages as the ID of the final entry of the previously - I am investigating falling back to the REST api if the user needs this functionality. |
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.
Pull Request Overview
This PR implements pagination support for GraphQL-based tools to provide consistent pagination capabilities across both REST and GraphQL APIs. The changes introduce a unified pagination approach that accepts traditional page/perPage parameters while providing GraphQL cursor-based pagination support through the after
parameter.
Key changes include:
- Introduction of
WithUnifiedPagination()
function that adds page, perPage, and after parameters to GraphQL tools - Conversion of private pagination struct fields to public fields (Page, PerPage, After)
- Addition of
ToGraphQLParams()
method to convert REST-style pagination to GraphQL parameters - Update of GraphQL discussion tools to return structured responses with pagination metadata
Reviewed Changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 4 comments.
Show a summary per file
File | Description |
---|---|
pkg/github/server.go | Adds unified pagination support and GraphQL parameter conversion |
pkg/github/discussions.go | Implements pagination for all discussion-related GraphQL tools |
pkg/github/discussions_test.go | Updates tests to handle new pagination response structure |
pkg/github/server_test.go | Updates pagination tests for public struct fields |
Multiple REST API files | Updates field references from private to public pagination fields |
README.md | Documents new pagination parameters for discussion tools |
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This PR idiomatically implements pagination for GraphQL based tools using the spec described in https://docs.github.com/en/graphql/reference/objects#connection and based on the standard in https://graphql.org/learn/pagination/
Closes: https://github.com/github/copilot-agent-services/issues/296