Pagination – Récupérer tous les dossiers d'une démarche
Exemple de cas d'usage : votre démarche est aujourd'hui close et vous souhaitez récuperer les informations des dossiers pour faire de l'analyse de donnée.
Pour paginer vos requetes, il faut ajouter les curseurs à votre requete GraphQL, Pour ce faire ajouter le PageInfoFragment et déclarez les variables de pagination sur la ressource paginée Ex :
query getDemarche(
$demarcheNumber: Int!
$order: Order
$first: Int
$after: String
$includeDossiers: Boolean = true
) {
demarche(number: $demarcheNumber) {
dossiers(
order: $order
first: $first
after: $after
) @include(if: $includeDossiers) {
pageInfo {
...PageInfoFragment
}
nodes {
...DossierFragment
}
pageInfo {
endCursor
hasNextPage
}
}
}
}
fragment DossierFragment on Dossier {
id
}
fragment PageInfoFragment on PageInfo {
hasPreviousPage
hasNextPage
endCursor
}Vous pouvez tester en executant le script suivant avec les variables d'environnement adaptées :
Pour faciliter la lecture du code, la query GraphQL est fournie en PJ
Ensuite, vous pouvez executer ce code ruby qui :
cherche a retrouver le dernier curseur que vous avez utiliser
si il est présent, le ré-utilise pour requeter la page suivante (sinon il repart a 0)
requete la page
sauve le curseur
Vous pouvez ainsi executer le script plusieurs fois pour parcourir toutes les pages de dossier de votre démarche
Tant qu'il n'y aura pas de nouvelle page a proposer, votre curseur renvera les même dossiers de la dernière page. Pensez a gérer l'idempotence de votre implementation pour ce cas las.
Mis à jour