Duniter-indexer changelog

We’ve worked on it at the last hackathon and few days after at home with @poka.

image

List on what’s have done :

Docker

  • build docker image of the indexer itself and another one for Hasura with migration
  • configuring the CI to auto publish docker images
  • refactoring docker-compose with prod, dev and test mode
    • prod : launch all pre-configured services
    • dev : launch all needed services, but not the indexer
    • test : launch duniter-rpc with sealing mode

Hasura

  • bump Hasura version
  • refactoring database :
    • with name as the primary key of identity table
    • renaming block index
    • renaming id to pubkey

Fastify

  • fill database directly with real sql queries and not through graphQL : more than x2 faster!
  • refactoring the process block mechanism with an event emitter
  • remove fastify-hasura and vite-node dependencies, which simplify docker workflow
  • started writing test with Vitest and fake data with Polkadot
  • indexing the true Ğ1 genesis and all transactions !

Frontend

  • designed awesome logo
  • refactored frontend and integrate anu-vue UI lib
  • update graphiQL to the latest
  • toggle mode relay graphQL API
  • display latest finalized block

You can take a look online here :
https://gdev-indexer-graphiql.p2p.legal

5 Likes

Is it easy to enable the GraphiQL plugin for click-only request? (the one with the checkboxes on the left which is enabled in Hasura console).

1 Like

Do you mean this one ? GitHub - OneGraph/graphiql-explorer: Explorer plugin for GraphiQL
I will try to add it…

2 Likes

Can we move the repository to a group, where we would find it more easily?
It could be moved into the nodes group. I created the indexers group.
Which one fits best?

Not sure which is the best between nodes and indexers. Depends whether we aim for precise categories or easy to find software.

Sure, good idea! Everywhere you want :slight_smile:
I don’t know which group fit the best. Maybe tools ? Or nodes ? Websites ? I really don’t know. Feel free to move it ! I’ll adapt myself…

I deleted the indexers group, and moved this repository into nodes group.
There is not much item at the root of this group.

2 Likes

Ok, thanks a lot. I’ll change my remote url.
ping @poka

Do we need to change something in the config of https://gdev-indexer-graphiql.p2p.legal/? It says "NetworkError when attempting to fetch resource.". @poka?

yes i have to dig it.

you should use hasura console instead for now

https://gdev-indexer.p2p.legal/console

Does it have something to do with INDEXER_HASURA_GRAPHQL_ENDPOINT_GRAPHIQL in the docker-compose.yml?

services:
  app:
    image: duniter/duniter-indexer:latest
    environment:
      - POSTGRES_HOST=postgres
      - INDEXER_DUNITER_WS_ENDPOINT=ws://duniter-rpc:9944
      - INDEXER_DUNITER_WS_ENDPOINT_GRAPHIQL=${INDEXER_DUNITER_WS_ENDPOINT_GRAPHIQL}
      - INDEXER_HASURA_GRAPHQL_ENDPOINT_GRAPHIQL=${INDEXER_HASURA_GRAPHQL_ENDPOINT_GRAPHIQL}
    restart: unless-stopped
    ports:
      - "3000:3000"
    depends_on:
      - duniter-rpc
      - postgres
      - graphql-engine

How can we fix it?

I think currently the bug come from a configuration mistake.
INDEXER_DUNITER_WS_ENDPOINT_GRAPHIQL should be the public websocket endpoint.
INDEXER_HASURA_GRAPHQL_ENDPOINT_GRAPHIQL should be the public hasura endpoint. (https://gdev-indexer.p2p.legal)

1 Like

Oh, thanks, I did not have the strength to dig in the code to see what it was supposed to be.
So for example?

- INDEXER_DUNITER_WS_ENDPOINT_GRAPHIQL="wss://gdev.coinduf.eu/ws"
- INDEXER_HASURA_GRAPHQL_ENDPOINT_GRAPHIQL="https://hasura.gdev.coinduf.eu/"

I set these ones, but the app is still unavailable: https://indexer.gdev.coinduf.eu/

Looks good!

1 Like

You wrote “looks good” at the time I updated my message to say that https://indexer.gdev.coinduf.eu/ was an empty page, even with this config.

Remove the double quote :

- INDEXER_DUNITER_WS_ENDPOINT_GRAPHIQL=wss://gdev.coinduf.eu/ws
- INDEXER_HASURA_GRAPHQL_ENDPOINT_GRAPHIQL=https://hasura.gdev.coinduf.eu/

Should not change anything in yaml file, no?

This config should be in .env file or docker-compose.prod.yaml file.

Right now as I show it (with the - before), it is yaml in the docker-compose.yml file. So I do not feel like I should try without quotes (moreover with the : special character)