Adding a pagination using scrivener in graphql

I have a use case where I have to add pagination in graphql api. So I have a schema like this wich is calling a resolver

  query do
    @desc "Get a list of all users"
    field :users, list_of(:user_type) do
      # Resolver
      resolve(&Resolvers.UserResolver.users/3)
    end

resolver

  def users(_, _, _) do
    {:ok, Accounts.list_users()}
  end

If I want a scrivener to add pagination how do I approach?
I have worked rest api which this library has a example of it

But I’m not sure what steps to follow in graphql

You need to wrap the scrivener struct in a graphql object

object :users do
  field :entries, non_null(list_of(non_null(:user_type)))
  field :page_number, non_null(:integer)
  field :page_size, non_null(:integer)
  field :total_pages, non_null(:integer)
  field :total_entries, non_null(:integer)
end

query do
  @desc "Get a list of all users"
   field :users, :users do
     # Resolver
     resolve(&Resolvers.UserResolver.users/3)
   end
end

Something like this

1 Like