Squid: PostGraphile as GraphQL engine instead of Hasura

C’est bon j’ai activé les relations, ils suffisait d’activer une option:

// graphileBuildOptions for plugins
graphileBuildOptions: {
    // Enable filtering on related tables/fields
    connectionFilterRelations: true,
    // Additional connection filter options
    connectionFilterAllowNullInput: true,
    connectionFilterAllowEmptyObjectInput: true,
},

query CertDetails {
  certs(
    filter: {
      and: [
        { issuer: { name: { equalTo: "poka" } } }
        { receiver: { name: { equalTo: "vit" } } }
      ]
    }
  ) {
    nodes {
      id
      isActive
      createdOn
      updatedOn
      expireOn
      certHistory {
        nodes {
          blockNumber
          eventType
        }
      }
      issuer {
        index
        status
      }
      receiver {
        index
        status
      }
    }
  }
}

{
  "data": {
    "certs": {
      "nodes": [
        {
          "id": "genesis-cert_61-58",
          "isActive": true,
          "createdOn": -83736,
          "updatedOn": -83736,
          "expireOn": 6192143,
          "certHistory": {
            "nodes": [
              {
                "blockNumber": -83736,
                "eventType": "Creation"
              }
            ]
          },
          "issuer": {
            "index": 61,
            "status": "Member"
          },
          "receiver": {
            "index": 58,
            "status": "Member"
          }
        }
      ]
    }
  }
}

Et grâce au depthLimiter on est normalement protégé contre les query abusives. A challenger.
Je merge, pousse, et déploie cette nouvelle mouture.

@ManUtopiK @vit @vjrj @joss.rendall Désolé il va encore falloir adapter un peu vos requêtes squid à partir de la 0.5.0, mais promis ça doit être léger comme diff, plus léger que le passage Hasura → Graphile.

{
  universalDividends {
    nodes {
      timestamp
      amount
    }
  }
}
    "universalDividends": {
      "nodes": [
        {
          "timestamp": "2025-10-12T01:44:36+00:00",
          "amount": "1173"
        },

Autre changement :

query MyQuery ($index: Int!) {
  identities(condition: {index: $index}) {
    nodes {
      accountId
      name
    }
  }
}

avec la variable

{"index": 49}

Avec Hasura, ça passait que la variable soit une string. Avec PostGraphile ce doit être un int.

A priori pour l’index c’est normal de n’accepter que des int.

Mon noeud https://gt-squid.axiom-team.fr/graphiql est à jour avec les dernières modifications, je vous laisse voir si ça vous convient.

Les fields amounts sont bien indiqués comme BigInt dans la doc de l’api.
Mais apparaissent parfois sous forme de string via graphiql, mais je pense que c’est seulement un artefact javascript.

Il reste encore linkedAccount qui est devenu accountsByLinkedIdentityId, je sais pas pourquoi.

Hello, est-ce que vous pouvez mettre à jour la doc en ligne pour les futurs forgerons G1v2 qui veulent mettre en place un Indexeur Squid avec PostGraphile GraphQL au lieu de Hasura svp ?
La partie FR est vide et celle GB est obsolète…

Tout le monde peut mettre en place des indexeurs, pas seulement les forgerons. Effectivement, j’avais oublié de mettre à jour, merci.

[edit] c’est fait, est-ce que tu peux tester cette documentation ?