Apollo v3 Graphql concatPagination for a specific field of a query?

Viewed 702

I am fairly newbie when it comes down to graphql. I have the following schema

       type query {
        allJobs (
         limit: Int
         cursorId: String
        ): JobSearchResults!

        type JobSearchResults {
         jobs: [Job!]
         hasMoreJobs: Boolean!
        }
       }

So there is the query allJobs and the result is an object with jobs array and a simply boolean hasMoreJobs to signal the end of the jobs.

On the client side I am able to query this and get results, but I am totally confused on how to cache these results. On ApolloClient I have the following:

cache: new InMemoryCache({
  typePolicies: {
    Query: {
      fields: {
        // cache the previous results and concat the new results to original data
        allJobs: concatPagination(), 
      },
    },
  },
}),

I know that this would work if I was just returning an array of jobs like that.

type query {
     allJobs (
     limit: Int
     cursorId: String
     ): [Jobs]!

My question is if there is a way to use concatPagination to cache only the jobs: [Job!] from the original query.

Or if there is a better way to deal with this problem? Maybe I need to rethink and reconstruct the original schema?

1 Answers
Related