Mokhtar Naamani 46de747d04 Merge branch 'sumer' into sumer-new-substrate-update-apps %!s(int64=3) %!d(string=hai) anos
..
bootstrap 7886c8d5bd Upgrade apps to @polkadot/api 4.2.1 (unfinished) %!s(int64=4) %!d(string=hai) anos
generated 1bf4cd816b Merge branch 'sumer' into query_node_video_metadata %!s(int64=3) %!d(string=hai) anos
mappings 46de747d04 Merge branch 'sumer' into sumer-new-substrate-update-apps %!s(int64=3) %!d(string=hai) anos
scripts f3a066535a Merge branch 'master' into sumer-new-substrate-update-apps %!s(int64=3) %!d(string=hai) anos
.gitignore 3ef0c05306 add missing export and files generated by warthog %!s(int64=4) %!d(string=hai) anos
README.md a2ef20dd78 Merge branch 'query_node_mappings' into query_node_generated_files %!s(int64=4) %!d(string=hai) anos
build.sh c7caa0ecf8 query node - processor types link rework %!s(int64=3) %!d(string=hai) anos
manifest.yml 40de3ce360 query node - storage provider metadata I %!s(int64=3) %!d(string=hai) anos
package.json be5b193d94 query node - processor db reset script %!s(int64=3) %!d(string=hai) anos
run-tests.sh 7a3e697569 github workflow do not stop joystream-node when starting tests %!s(int64=3) %!d(string=hai) anos
schema.graphql b7d59a003e query node - storage provider / working group generalization %!s(int64=3) %!d(string=hai) anos

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.

Tmp command order

TODO: remove after integration tests are finished and query node runs without any issues

# build everything
yarn
yarn build

running the processor:

cp types/augment/all/defs.json query-node/mappings/lib/generated/types/typedefs.json
docker-compose up -d db
yarn workspace query-node-root db:create
yarn workspace query-node-root db:migrate