Duniter-squid

Je viens de lancer mon noeud Squid: https://gdev-squid.axiom-team.fr

J’y ai activé les subscriptions. Toutes les queries (hors queries *Connection réservés à la pagination) peuvent donc être transformé tel quel en subscription, simplement en changeant le mot clé de début de requête query par subscription, exemple:

subscription eventsTransfer {
  events(limit: 10, orderBy: block_height_DESC, where: {pallet_eq: "Balances", name_eq: "Transfer"}) {
    id
    name
    pallet
    args
    block {
      height
    }
  }
}

Pour souscrire aux dernière transactions émises sur le réseau.
Chose fun, lorsque votre squid se synchronise la première fois à votre chaine, vous pouvez suivre en live son état en souscrivant à une table au choix.

Je travail sur la MR !1 pour homogénéiser l’environnement de dev/prod.


Je met ici ma conf nginx pour d’une part rediriger / vers /graphql, et laisser passer les connections websocket:

upstream gdev-squid.axiom-team.fr {
   server       10.10.10.107:10020;
}

[...]

   location / {
      proxy_pass        http://gdev-squid.axiom-team.fr;
      proxy_set_header  X-Real-IP  $remote_addr;
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header  X-Forwarded-Proto https;
      proxy_set_header  Host $http_host;
      proxy_redirect    off;

      # for websocket
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
   }

Exemple de requête paginé, pour voir toutes les transactions émises et reçus de mon compte:

query history {
  transfersConnection(where: {from: {id_eq: "5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn"}, OR: {to: {id_eq: "5CQ8T4qpbYJq7uVsxGPQ5q2df7x3Wa4aRY6HUWMBYjfLZhnn"}}}, orderBy: blockNumber_DESC_NULLS_LAST, after: null, first: 10) {
    pageInfo {
      endCursor
      hasNextPage
    }
    edges {
      node {
        amount
        id
        timestamp
        from {
          id
          identity {
            name
          }
        }
        to {
          id
          identity {
            name
          }
        }
      }
    }
  }
}

Pagination graphql classique, vous renseignez la valeur de endCursor à after pour passer de page en page. La subtilité c’est qu’ils semblent avoir mixé leur convention de format de curseur avec la pagination par offset, les curseurs étant des nombres entier incrémentales. Plutôt étrange.


Première issue:

1 Like