Mokhtar Naamani 2f05da0c6d types v0.17.2 2 anni fa
..
codegen d403b61998 Merge branch 'giza' into giza-update-hydra 2 anni fa
mappings 2f05da0c6d types v0.17.2 2 anni fa
schemas efdf23a332 query-node: Update mappings for the transactor account ID. 2 anni fa
.gitignore 2786e96d21 Update gitignore - exclude autogenerated files 3 anni fa
README.md 27dfe5a50b query node - graphql playground settings + reenabling relation id fields 3 anni fa
build.sh 4ddc1b99b1 Giza Query Node: Update Hydra and remove workarounds 2 anni fa
kill.sh 765f5c0371 Query node kill script fix 2 anni fa
manifest.yml cc7f51c984 Merge branch 'giza' into giza-qn-bootstrap 3 anni fa
package.json 2d8324c18d Merge branch 'giza_staging' into distributor-node-staging 2 anni fa
start.sh b58d180250 tests: factor out query-node start script 3 anni fa

README.md

Query node

This is a query-node project generated by hydra-cli. Experiment by modifying schema.graphql and the mappings in the mappings folder, defined in manifest.yml.

1. Bootstrap

Run

yarn && yarn bootstrap

and generate the model files as defined in schema.graphql, create the database and run all the necessary migrations in one shot.

NB! Don't use in production, as it will delete all the existing records.

2. Generate Types for events and extrinsics

A separate tool Hydra Typegen can be used for generating Typescript classes for the event handlers (the mappings).
Run

yarn typegen

to run the typegen for events and extrinsics defined in manifest.yml (it fetches the metadata from an RPC endpoint and blockhash defined there).

3. Build Mappings

Mappings is a separated TypeScript module created in the mappings folder. The handlers exported by the module should match the ones defined in manifest.yml in the mappings section. Once the necessary files are generated, build it with

yarn mappings:build

4. Run the processor and the GraphQL server

Then run the processor:

yarn processor:start

Afterwards start the GraphQL server in a separate terminal (opens a GraphQL playground at localhost by default):

yarn query-node:start:dev

5. Locally hosted indexer

The Hydra Indexer endpoint used by Hydra processor is defined as environment variable INDEXER_ENDPOINT_URL sourced from .env. There are publicly available Hydra indexers for Polkadot and Subsocial. For other chains, a self-hosted indexer should be used.

The simplest way to run an indexer locally is to run docker-compose-indexer.yml with docker-compose. The following environment variables must be provided:

  • Database connection settings: DB_NAME, DB_HOST, DB_PORT, DB_USER, DB_PASS
  • Chain RPC endpoint: WS_PROVIDER_ENDPOINT_URI
  • If non-standard types are being used by the Substrate runtime, map type definitions in the json format as an external volume

Follow the links for more information about the indexer service and indexer-api-gateway.

GraphQL Playground assets url

Query node's user interface, GraphQL Playground, is expecting to be served at /graphql. If you are serving the files on path like /query/server/graphql via some nginx proxy, aliasing, etc. you will need to provide the base url to query node server via GRAPHQL_PLAYGROUND_CDN environment variable.

# use the following when serving playground at `/query/server/graphql`
GRAPHQL_PLAYGROUND_CDN="query/server" yarn workspace query-node-root query-node:start:dev