# ĞDev indexer

**URL:** https://forum.duniter.org/t/gdev-indexer/9481
**Category:** Indexers
**Created:** [13 June 2022 22:38 UTC](https://forum.duniter.org/t/gdev-indexer/9481 "2022-06-13T22:38:31Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![HugoTrentesaux](https://forum.duniter.org/user_avatar/forum.duniter.org/hugotrentesaux/32/6396_2.png) [@HugoTrentesaux](https://forum.duniter.org/u/HugoTrentesaux)
#### Post date: [13 June 2022 22:38 UTC](https://forum.duniter.org/t/gdev-indexer/9481/1 "2022-06-13T22:38:31Z")

</div>

Et maintenant, grâce à @ManUtopiK qui a publié le code de [https://git.duniter.org/manutopik/duniter-indexer](https://git.duniter.org/manutopik/duniter-indexer) (j’ai complété la doc d’installation), nous avons un endpoint GraphQL public ~~[https://duniter-indexer.coinduf.eu/v1/graphql](https://duniter-indexer.coinduf.eu/v1/graphql)~~ que vous pouvez tester dans une interface graphql comme [https://graphiql-online.com/graphiql](https://graphiql-online.com/graphiql) en attendant la prochaine release de Ǧecko qui l’utilise déjà !

 ![image](https://forum.duniter.org/uploads/default/original/2X/4/46e6e44ec0621235c7a7ee3fa7b658bee4caff27.png)

(laissez un peu de temps à l’indexeur de finir de rattraper mon nœud rpc lui-même en train de rattraper le reste de la blockchain)

> **pour partager une requête**
>
> ````
> [details="requête"]
> ```graphql
> 
> ```
> [/details]
> 
> [details="variables"]
> ```json
> 
> ```
> [/details]
> 
> [details="réponse"]
> ```json
> 
> ```
> [/details]
> 
> ````

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [13 June 2022 23:52 UTC](https://forum.duniter.org/t/gdev-indexer/9481/2 "2022-06-13T23:52:02Z")

</div>

Félicitations @ManUtopiK 👏

Bon j’avais déjà vu les avancées en coulisse et est passé du temps à t’aider à bien concevoir tout ça aux RML et après, mais tu as été très rapide pour maturer le projet 😃

J’ai juste 2 petites remarques sur les dernières avancées :

- Le numéro de bloc, nommé aussi hauteur de bloc, devrait être nommé `number` ou `height`, le terme actuel (`index`) ne conviens pas.
- Les identités du genesis sont indiquées comme créées au bloc #1, alors qu’elles sont créées au bloc #0 😉

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [14 June 2022 10:38 UTC](https://forum.duniter.org/t/gdev-indexer/9481/3 "2022-06-14T10:38:03Z")

</div>

@ManUtopiK ce serait bien de fournir une image docker pour l’indexer, ainsi je pourrais l’ajouter au compose de mon nœud d’archive pour héberger une instance 🙂

EDIT: Aussi on ne devrait pas avoir besoin d’installer hasura cli pour initiatiser la DB, on doit pouvoir faire ça uniquement via une config dans le compose sur un ou plusieurs micro-services, il faut donc que l’un des micro-service s’occupe d’initialiser les metadata et de run les migrations. Je vois dans la doc d’hasura que c’est possible: [Auto-apply migrations/metadata when the server starts (config v2) | Hasura GraphQL Docs](https://hasura.io/docs/latest/graphql/core/migrations/config-v2/advanced/auto-apply-migrations/) ([lien v3](https://hasura.io/docs/latest/graphql/core/migrations/advanced/auto-apply-migrations/)).

---

<div class="post-metadata">

### Author: ![ManUtopiK](https://forum.duniter.org/user_avatar/forum.duniter.org/manutopik/32/29_2.png) [@ManUtopiK](https://forum.duniter.org/u/ManUtopiK)
#### Post date: [14 June 2022 11:29 UTC](https://forum.duniter.org/t/gdev-indexer/9481/4 "2022-06-14T11:29:39Z")

</div>

Ok, je met docker dans ma todo list.  
Je ne savais pas qu’on pouvais appliquer les migrations et metadata au démarage.  
Le lien pour la config v3 : [Auto-apply migrations/metadata when the server starts | Hasura GraphQL Docs](https://hasura.io/docs/latest/graphql/core/migrations/advanced/auto-apply-migrations/)  
Je vais intégrer ça…

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [14 June 2022 13:11 UTC](https://forum.duniter.org/t/gdev-indexer/9481/5 "2022-06-14T13:11:46Z")

</div>

> [@ManUtopiK](#):
>
> Ok, je met docker dans ma todo list.

@ManUtopiK je te recommande de builder et publier l’image docker directement depuis la CI, tu as plein d’exemples dans les dépôts du groupe docker: [docker · GitLab](https://git.duniter.org/docker)

Si tu as besoin d’aide je peux t’aider en visio, je pense que ça vaut le coup que tu apprennes à le faire, c’est des compétences qui te seront utiles 🙂

> [@ManUtopiK](#):
>
> Je ne savais pas qu’on pouvais appliquer les migrations et metadata au démarage.

C’est l’inverse qui aurait été étonnant, je suis parti du principe que c’était forcément possible, car c’est nécessaire pour pouvoir déployer en prod avec docker, à partir de là j’ai juste cherché dans leur doc et j’ai trouvé en 5 min 🙂

Mais ça me semble souhaitable que pour la prod, le mieux c’est que tu es 2 docker-compose, un pour le dev et un pour la prod, car les besoins ne sont pas les mêmes 😉

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [14 June 2022 19:39 UTC](https://forum.duniter.org/t/gdev-indexer/9481/6 "2022-06-14T19:39:10Z")

</div>

> [@elois](#):
>
> je te recommande de builder et publier l’image docker directement depuis la CI, tu as plein d’exemples dans les dépôts du groupe docker: [docker · GitLab](https://git.duniter.org/docker)

Tiens justement, où peut-on trouver le job qui build l’image `duniter/duniter-v2s` ?

---

<div class="post-metadata">

### Author: ![HugoTrentesaux](https://forum.duniter.org/user_avatar/forum.duniter.org/hugotrentesaux/32/6396_2.png) [@HugoTrentesaux](https://forum.duniter.org/u/HugoTrentesaux)
#### Post date: [14 June 2022 19:40 UTC](https://forum.duniter.org/t/gdev-indexer/9481/7 "2022-06-14T19:40:56Z")

</div>

> [@cgeek](#):
>
> Tiens justement, où peut-on trouver le job qui build l’image `duniter/duniter-v2s` ?

bah ici, non ? [https://git.duniter.org/nodes/rust/duniter-v2s/-/jobs](https://git.duniter.org/nodes/rust/duniter-v2s/-/jobs)

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [14 June 2022 19:43 UTC](https://forum.duniter.org/t/gdev-indexer/9481/8 "2022-06-14T19:43:40Z")

</div>

Ah bah oui, j’ai bêtement suivi le lien qui parlait du groupe `docker` contenant les projets d’exemple. Mais en effet, merci.

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [14 June 2022 19:55 UTC](https://forum.duniter.org/t/gdev-indexer/9481/9 "2022-06-14T19:55:51Z")

</div>

@cgeek c’est le job `deploy_docker_release_tag` tout à la fin du fichier `.gitlab-ci.yml`:

> **[.gitlab-ci.yml · master · nodes / rust / Duniter v2S · GitLab](https://git.duniter.org/nodes/rust/duniter-v2s/-/blob/master/.gitlab-ci.yml#L235-248)**
>
> Duniter v2 based on Substrate framework

Mais la CI de duniter-v2s n’est pas un bon exemple pour débuter, car elle est complexe, j’utilise un «&nbsp;template de job&nbsp;» car je build plusieurs types d’images selon les conditions, et en plus je récupère le binaire buildé dans un autre job, afin de ne compiler qu’une fois.

Pour débuter il vaut mieux s’inspirer d’une CI plus simple, comme celle-ci par exemple: [.gitlab-ci.yml · master · docker / dunitrust / dunitrust-rs-ci · GitLab](https://git.duniter.org/docker/dunitrust/dunitrust-ci-lin64/-/blob/master/.gitlab-ci.yml)

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [14 June 2022 20:28 UTC](https://forum.duniter.org/t/gdev-indexer/9481/10 "2022-06-14T20:28:48Z")

</div>

> [@ManUtopiK](#):
>
> Je vais intégrer ça…

Si tu veux je viens de te faire une [MR](https://git.duniter.org/manutopik/duniter-indexer/-/merge_requests/2).

---

<div class="post-metadata">

### Author: ![ManUtopiK](https://forum.duniter.org/user_avatar/forum.duniter.org/manutopik/32/29_2.png) [@ManUtopiK](https://forum.duniter.org/u/ManUtopiK)
#### Post date: [14 June 2022 20:34 UTC](https://forum.duniter.org/t/gdev-indexer/9481/11 "2022-06-14T20:34:56Z")

</div>

Génial ! Merci 🙂

---

<div class="post-metadata">

### Author: ![ManUtopiK](https://forum.duniter.org/user_avatar/forum.duniter.org/manutopik/32/29_2.png) [@ManUtopiK](https://forum.duniter.org/u/ManUtopiK)
#### Post date: [14 June 2022 21:07 UTC](https://forum.duniter.org/t/gdev-indexer/9481/12 "2022-06-14T21:07:14Z")

</div>

Bon, avec tout ça, j’ai pris du retard sur mon taf, puis la fin d’année scolaire tout le monde s’excite…  
Je vais pas trop pouvoir me mettre dessus cette semaine.

Du coup j’ai créé des tickets, si ça vous avez envie de contribuer !

> **[Issues · Emmanuel Salomon / duniter-indexer · GitLab](https://git.duniter.org/manutopik/duniter-indexer/-/issues)**
>
> Indexer for Duniter with Fastify (node.js) and Hasura (graphql on postgresql database)

@elois Il y a pas le feu, mais si tu peux jetter un oeil sur pourquoi la [subscription au storage](https://git.duniter.org/manutopik/duniter-indexer/-/blob/master/src/plugins/subscribe-new-block.ts#L29) ne retourne rien ? Est-ce que c’est bien le bon ?

---

<div class="post-metadata">

### Author: ![elois](https://forum.duniter.org/user_avatar/forum.duniter.org/elois/32/1541_2.png) [@elois](https://forum.duniter.org/u/elois)
#### Post date: [14 June 2022 21:18 UTC](https://forum.duniter.org/t/gdev-indexer/9481/13 "2022-06-14T21:18:30Z")

</div>

> [@ManUtopiK](#):
>
> Bon, avec tout ça, j’ai pris du retard sur mon taf,

Oui moi c’est pareil haha, je vais être obligé de lever un peu le pied 😅

> [@ManUtopiK](#):
>
> Du coup j’ai créé des tickets, si ça vous avez envie de contribuer !

Est-ce quelqu’un peut ajouter la dockerisation ? peut-être @Pini ?

> [@ManUtopiK](#):
>
> @elois Il y a pas le feu, mais si tu peux jetter un oeil sur pourquoi la [subscription au storage](https://git.duniter.org/manutopik/duniter-indexer/-/blob/master/src/plugins/subscribe-new-block.ts#L29) ne retourne rien ? Est-ce que c’est bien le bon ?

C’est juste ton préfix qui n’est pas bon, je t’ai répondu dans l’issue dédiée 🙂

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [16 June 2022 21:03 UTC](https://forum.duniter.org/t/gdev-indexer/9481/14 "2022-06-16T21:03:32Z")

</div>

J’ai tenté de faire un build Prod, mais j’ai rencontré l’erreur [pnpm start: ERR\_REQUIRE\_ESM](https://git.duniter.org/manutopik/duniter-indexer/-/issues/9). Aurais-tu une piste ?

---

<div class="post-metadata">

### Author: ![ManUtopiK](https://forum.duniter.org/user_avatar/forum.duniter.org/manutopik/32/29_2.png) [@ManUtopiK](https://forum.duniter.org/u/ManUtopiK)
#### Post date: [16 June 2022 22:56 UTC](https://forum.duniter.org/t/gdev-indexer/9481/15 "2022-06-16T22:56:54Z")

</div>

Oui. Je suis parti avec mon boilerplate fastify-vite qui utilse vite-plugin-node qui est bien pratique quand on fait du front, mais pas trop pour cet indexer en fait.  
Et mon plugin [fastify-hasura](https://github.com/ManUtopiK/fastify-hasura) marche pas avec vite parce qu’il est fait en type module (import … from …) ou peut-être que c’est juste qu’il a type:module dans le package.json.

Bref, pas eu le temps de corriger tout ça…  
Soit je vire vite, mais c’est dommage car on perd vitest qui est excellent. Soit je met à jour mon plugin fastify-hasura…  
J’aurais plus de temps la semaine prochaine pour ça.

---

<div class="post-metadata">

### Author: ![Pini](https://forum.duniter.org/user_avatar/forum.duniter.org/pini/32/6819_2.png) [@Pini](https://forum.duniter.org/u/Pini)
#### Post date: [20 June 2022 15:06 UTC](https://forum.duniter.org/t/gdev-indexer/9481/16 "2022-06-20T15:06:33Z")

</div>

> [@elois](#):
>
> Est-ce quelqu’un peut ajouter la dockerisation ? peut-être @Pini ?

J’ai pris quelques jours de vacance. Je jetterai un oeil.

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [20 June 2022 19:09 UTC](https://forum.duniter.org/t/gdev-indexer/9481/17 "2022-06-20T19:09:25Z")

</div>

J’ai déjà regardé, mais pas encore publié. En fait comme indiqué ci-dessus je bloque sur le build «&nbsp;prod&nbsp;» avec l’erreur ERR\_REQUIRE\_ESM, qui nécessite une expertise un peu trop coûteuse pour moi, @ManUtopiK sera plus efficace.

---

<div class="post-metadata">

### Author: ![kimamila](https://forum.duniter.org/user_avatar/forum.duniter.org/kimamila/32/185_2.png) [@kimamila](https://forum.duniter.org/u/kimamila)
#### Post date: [21 June 2022 04:38 UTC](https://forum.duniter.org/t/gdev-indexer/9481/18 "2022-06-21T04:38:21Z")

</div>

Salut à tous !

De mon côté j’avance aussi, avec un indexeur ES sur la GDev, qui me permettra de maintenir les services Cesium+ et Gchange (suivi des TX pour les financements participatifs).  
Il a une lib [PolkaJ](https://github.com/emeraldpay/polkaj) qui permet d’accéder à l’API RPC, en Java, et qui me va très bien (pour le moment).  
Il sera ensuite facile de mettre en place une API GraphQL au dessus du cluster ES, pour servir les logiciels clients (wallets).

J’utilise PostgreSQL au boulot, en prod, et je peux assurer que les perfs n’ont rien à voir. Et puis je voudrais faire en sorte que l’existant continuer de fonctionner.  
Après si on peut harmoniser les API GraphQL qui en sorte, c’est mieux. Mais de toute manière je n’en suis pas encore rendu là.

a+

---

<div class="post-metadata">

### Author: ![cgeek](https://forum.duniter.org/user_avatar/forum.duniter.org/cgeek/32/279_2.png) [@cgeek](https://forum.duniter.org/u/cgeek)
#### Post date: [10 July 2022 22:26 UTC](https://forum.duniter.org/t/gdev-indexer/9481/19 "2022-07-10T22:26:41Z")

</div>

Je me suis rabattu sur la solution consistant à forker `fastify-hasura` et à lui retirer son `"type": "module"`. [MR!5](https://git.duniter.org/manutopik/duniter-indexer/-/merge_requests/5).

Avec cette MR, on peut lancer la stack complète depuis les sources avec :

```
cp .env.production .env
docker-compose -f docker-compose.yaml -f docker-compose.prod.yaml up -d

```

Et il existe la même idée mais pour lancer en mode `dev`.

J’ai déjà testé cette nouvelle version chez moi en déployant : [https://idx.gdev.cgeek.fr](https://idx.gdev.cgeek.fr).

@poka voudrais-tu bien tester de brancher Gecko dessus ? Il me semble que tu peux le faire.  
Tu devrais avoir des données plus à jour car [l’indexeur était buggué](https://git.duniter.org/manutopik/duniter-indexer/-/issues/2) et ne réalisait qu’une indexation initiale et n’indexait pas les blocs suivants, or j’ai corrigé ce point sur mon noeud.

---

<div class="post-metadata">

### Author: ![poka](https://forum.duniter.org/user_avatar/forum.duniter.org/poka/32/6827_2.png) [@poka](https://forum.duniter.org/u/poka)
#### Post date: [11 July 2022 01:19 UTC](https://forum.duniter.org/t/gdev-indexer/9481/20 "2022-07-11T01:19:58Z")

</div>

Je n’arrive pas à requêter de endpoint à cette adresse.

Il devrait y avoir un endpoint du style [https://idx.gdev.cgeek.fr/v1/graphql](https://idx.gdev.cgeek.fr/v1/graphql), ainsi qu’un accès à la console hasura ici [https://idx.gdev.cgeek.fr/console](https://idx.gdev.cgeek.fr/console), comme pour ce endpoint: [https://duniter-indexer.coinduf.eu/console](https://duniter-indexer.coinduf.eu/console)

[Next page](https://forum.duniter.org/t/gdev-indexer/9481.md?page=2)
