So I jumped in the middle of some project, and I'm supposed to add cursor pagination in GraphQL to a list within an object.
The query (fetches only a single object, within which do we get the data we need to paginate):
export const GET_OBJECT = gql`
query objectGroup($id: id) {
objectGroup(objectId: $id) {
nodes {
...fragment1
}
}
}
${FRAGMENT1}
`
Fragment1 roughly looks like this:
export const FRAGMENT1 = gql`
fragment fragment1 on objectGroup {
// some irrelevant content
listItems {
...fragment2
someMoreData {
blah
blah
}
}
}
${FRAGMENT2}
`
And finally, fragment 2 contains individual fields for each item:
export const FRAGMENT2 = gql`
fragment listItem on ListItem {
id
name
size
}
`
Now, I've analyzed other parts of the app where this kind of pagination is implemented, but it's always added to a query, next to nodes, within pageInfo they added stuff like first, after, hasNextPage, hasPreviousPage (which come from another fragment that contains just those fields).
However, here, as you can see, it's a bit more complex. If I add pageInfo with the accompanying fields to the query, it does nothing, since we're always fetching only one object anyway, and it doesn't affect the part I need.
The logical thing, judging from this structure, seems to be adding some arguments to the listItems within Fragment 1. But if I try adding first or anything like that, I just get a message saying "Field 'listItems' doesn't accept argument 'after'", or if I try adding the pageInfo field anywhere, it says 'Field 'pageInfo' doesn't exist on type 'ListItem'.
And no, I don't have access to the schema or anything backend.
Is there a way to implement this? I'm sorry if it's a stupid question, but it's a very specific situation, and Google wasn't very helpful