From 80e2feec021e6eca9253d27026dbbc5c48706c2e Mon Sep 17 00:00:00 2001 From: James Bayly Date: Wed, 28 Feb 2024 14:11:32 +0800 Subject: [PATCH] Add Query Ecosystem guides --- docs/.vuepress/config.ts | 8 ++++-- .../img/run_publish/integration_ecosystem.png | Bin 0 -> 102024 bytes docs/.vuepress/sidebar.ts | 13 ++++++---- docs/academy/herocourse/module5.md | 2 +- docs/build/graph-migration.md | 2 +- docs/build/project-upgrades.md | 2 +- .../quickstart_chains/polkadot-astar.md | 6 ++--- .../quickstart_chains/polkadot-kilt.md | 12 ++++----- .../quickstart_chains/polkadot-moonbeam.md | 8 +++--- docs/quickstart/snippets/query-intro.md | 2 +- docs/quickstart/whats-next.md | 2 +- docs/run_publish/optimisation.md | 4 +-- docs/run_publish/publish.md | 2 +- docs/run_publish/{ => query}/aggregate.md | 2 +- .../{query.md => query/graphql.md} | 6 ++--- .../{ => query}/other_tools/metabase.md | 8 +++--- docs/run_publish/query/query.md | 23 ++++++++++++++++++ docs/run_publish/{ => query}/subscription.md | 0 docs/run_publish/references.md | 6 ++--- docs/subquery_network/publish.md | 2 +- 20 files changed, 70 insertions(+), 40 deletions(-) create mode 100644 docs/.vuepress/public/assets/img/run_publish/integration_ecosystem.png rename docs/run_publish/{ => query}/aggregate.md (94%) rename docs/run_publish/{query.md => query/graphql.md} (76%) rename docs/run_publish/{ => query}/other_tools/metabase.md (89%) create mode 100644 docs/run_publish/query/query.md rename docs/run_publish/{ => query}/subscription.md (100%) diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts index 76937d92c39..3bc894e4f96 100644 --- a/docs/.vuepress/config.ts +++ b/docs/.vuepress/config.ts @@ -297,6 +297,10 @@ export default defineUserConfig({ "/build/quickstart/quickstart_chains/terra.html": "/build/quickstart/quickstart_chains/cosmos.html", "/run_publish/ipfs.html": "/miscellaneous/ipfs.html", + "/run_publish/query.html": "/run_publish/query/graphql.html", + "/run_publish/aggregate.html": "/run_publish/query/aggregate.html", + "/run_publish/subscription.html": + "/run_publish/query/subscription.html", }; return { ...redirects, @@ -304,10 +308,10 @@ export default defineUserConfig({ app.pages.map(({ path }) => [ path.replace( "/subquery_network/node_operators/indexers/", - "/subquery_network/indexers/", + "/subquery_network/indexers/" ), path, - ]), + ]) ), }; }, diff --git a/docs/.vuepress/public/assets/img/run_publish/integration_ecosystem.png b/docs/.vuepress/public/assets/img/run_publish/integration_ecosystem.png new file mode 100644 index 0000000000000000000000000000000000000000..24a39e326110c78e3a604e98cbd304cf08e4fd25 GIT binary patch literal 102024 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⪼#BfC|YMNX2A8UUxMG` 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 kzgpuUC+DRCcD9m@- }, `${locale}/run_publish/cli.md`, { - text: "Querying", + text: "Query and Access Data", + link: `${locale}/run_publish/query/query.md`, + collapsible: true, children: [ + `${locale}/run_publish/query/query.md`, { text: "GraphQL", children: [ - `${locale}/run_publish/query.md`, - `${locale}/run_publish/aggregate.md`, - `${locale}/run_publish/subscription.md`, + `${locale}/run_publish/query/graphql.md`, + `${locale}/run_publish/query/aggregate.md`, + `${locale}/run_publish/query/subscription.md`, ], }, { text: "Other Tools", - children: [`${locale}/run_publish/other_tools/metabase.md`], + children: [`${locale}/run_publish/query/other_tools/metabase.md`], }, ], }, diff --git a/docs/academy/herocourse/module5.md b/docs/academy/herocourse/module5.md index 2002d77c118..ecd1f53515b 100644 --- a/docs/academy/herocourse/module5.md +++ b/docs/academy/herocourse/module5.md @@ -92,7 +92,7 @@ Slots are a feature in SubQuery's Managed Service that are the equivalent of a d Once your project is deployed, access your project and run your desired query in the playground. For more information, visit: -- [Query your Project using GraphQL in SubQuery Explorer](/run_publish/query.md) +- [Query your Project using GraphQL in SubQuery Explorer](/run_publish/query/graphql.md) #### Step 6: Query via the API diff --git a/docs/build/graph-migration.md b/docs/build/graph-migration.md index 1acf0f987a5..4a2851ae978 100644 --- a/docs/build/graph-migration.md +++ b/docs/build/graph-migration.md @@ -517,7 +517,7 @@ SubQuery does not support historical metadata querying. However `deployments` wi - SubQuery has a larger support for query pagination. You have the options of using `first` and `offset`, or `cursors` on `edges`. - Note that [cursor-based pagination](https://graphql.org/learn/pagination/#pagination-and-edges) is far more efficient compared to `first`/`offset`/`after` pagination -- SubQuery supports [advanced aggregate functions](../run_publish/aggregate.md) to allow you to perform a calculation on a set of values during your query. +- SubQuery supports [advanced aggregate functions](../run_publish/query/aggregate.md) to allow you to perform a calculation on a set of values during your query. ## What's Next? diff --git a/docs/build/project-upgrades.md b/docs/build/project-upgrades.md index f186cbecfb4..7db2f12ef96 100644 --- a/docs/build/project-upgrades.md +++ b/docs/build/project-upgrades.md @@ -79,5 +79,5 @@ Other notes: - Only supports PostgreSQL stores - Migrations will not succeed `--unfinalizedBlocks` is enabled - Does not support Enum modification -- [GraphQL subscriptions](../run_publish/subscription.md) are not supported +- [GraphQL subscriptions](../run_publish/query/subscription.md) are not supported - [Rewind](../run_publish/historical.md) will only be supported if the new schema does not drop any `fields` or `entity`. Note that [automated historical state tracking](../run_publish/historical.md) must be enabled to support rewind. diff --git a/docs/quickstart/quickstart_chains/polkadot-astar.md b/docs/quickstart/quickstart_chains/polkadot-astar.md index 813d4f23001..92bb2384bd9 100644 --- a/docs/quickstart/quickstart_chains/polkadot-astar.md +++ b/docs/quickstart/quickstart_chains/polkadot-astar.md @@ -191,7 +191,7 @@ Navigate to the default mapping function in the `src/mappings` directory. There type ApproveCallArgs = [AccountId, Balance]; export async function handleWasmCall( - call: WasmCall, + call: WasmCall ): Promise { logger.info(`Processing WASM Call at ${call.blockNumber}`); const approval = new Approval(`${call.blockNumber}-${call.idx}`); @@ -214,7 +214,7 @@ The `handleWasmCall` function receives event data from the WASM execution enviro ```ts export async function handleBondAndStake(event: SubstrateEvent): Promise { logger.info( - `Processing new Dapp Staking Bond and Stake event at ${event.block.block.header.number}`, + `Processing new Dapp Staking Bond and Stake event at ${event.block.block.header.number}` ); const { event: { @@ -265,7 +265,7 @@ query { ``` ::: tip -There is a _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and helps you find what entities and methods you can query. To learn more about the GraphQL Query language [here](../../run_publish/query.md). +There is a _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and helps you find what entities and methods you can query. To learn more about the GraphQL Query language [here](../../run_publish/query/graphql.md). ::: You should see results similar to below: diff --git a/docs/quickstart/quickstart_chains/polkadot-kilt.md b/docs/quickstart/quickstart_chains/polkadot-kilt.md index 6fa6dfdd648..3544ca3f8a4 100644 --- a/docs/quickstart/quickstart_chains/polkadot-kilt.md +++ b/docs/quickstart/quickstart_chains/polkadot-kilt.md @@ -83,10 +83,10 @@ Navigate to the default mapping function in the `src/mappings` directory. There ```ts export async function handleAttestationCreated( - event: SubstrateEvent, + event: SubstrateEvent ): Promise { logger.info( - `New attestation created at block ${event.block.block.header.number}`, + `New attestation created at block ${event.block.block.header.number}` ); // A new attestation has been created.\[attester ID, claim hash, CType hash, (optional) delegation ID\] const { @@ -112,10 +112,10 @@ export async function handleAttestationCreated( } export async function handleAttestationRevoked( - event: SubstrateEvent, + event: SubstrateEvent ): Promise { logger.info( - `New attestation revoked at block ${event.block.block.header.number}`, + `New attestation revoked at block ${event.block.block.header.number}` ); // An attestation has been revoked.\[account id, claim hash\] const { @@ -138,7 +138,7 @@ export async function handleAttestationRevoked( export async function handleDailyUpdate( date: Date, - type: "CREATED" | "REVOKED", + type: "CREATED" | "REVOKED" ): Promise { const id = date.toISOString().slice(0, 10); let aggregation = await Aggregation.get(id); @@ -194,7 +194,7 @@ query { ``` ::: tip -There is a _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and helps you find what entities and methods you can query. To learn more about the GraphQL Query language [here](../../run_publish/query.md). +There is a _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and helps you find what entities and methods you can query. To learn more about the GraphQL Query language [here](../../run_publish/query/graphql.md). ::: You should see results similar to below: diff --git a/docs/quickstart/quickstart_chains/polkadot-moonbeam.md b/docs/quickstart/quickstart_chains/polkadot-moonbeam.md index e9fd7ec5a45..3c3186117d7 100644 --- a/docs/quickstart/quickstart_chains/polkadot-moonbeam.md +++ b/docs/quickstart/quickstart_chains/polkadot-moonbeam.md @@ -136,7 +136,7 @@ Navigate to the default mapping function in the `src/mappings` directory. There ```ts export async function handleCollatorJoined( - call: SubstrateExtrinsic, + call: SubstrateExtrinsic ): Promise { //We added a logger to the top of this function, in order to see the block number of the event we are processing. logger.info(`Processing SubstrateEvent at ${call.block.block.header.number}`); @@ -152,7 +152,7 @@ export async function handleCollatorJoined( } export async function handleCollatorLeft( - call: SubstrateExtrinsic, + call: SubstrateExtrinsic ): Promise { //We added a logger to the top of this function, in order to see the block number of the event we are processing. logger.info(`Processing SubstrateCall at ${call.block.block.header.number}`); @@ -168,7 +168,7 @@ The `handleCollatorJoined` and `handleCollatorLeft` functions receives Substrate export async function erc20Transfer( event: MoonbeamEvent< [string, string, BigNumber] & { from: string; to: string; value: BigNumber } - >, + > ): Promise { //We added a logger to the top of this function, in order to see the block number of the event we are processing. logger.info(`Processing MoonbeamEvent at ${event.blockNumber.toString()}`); @@ -209,7 +209,7 @@ query { ``` ::: tip -There is a _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and helps you find what entities and methods you can query. To learn more about the GraphQL Query language [here](../../run_publish/query.md). +There is a _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and helps you find what entities and methods you can query. To learn more about the GraphQL Query language [here](../../run_publish/query/graphql.md). ::: You should see results similar to below: diff --git a/docs/quickstart/snippets/query-intro.md b/docs/quickstart/snippets/query-intro.md index d1595b469d0..03ea9df71de 100644 --- a/docs/quickstart/snippets/query-intro.md +++ b/docs/quickstart/snippets/query-intro.md @@ -8,4 +8,4 @@ Next, let's query our project. Follow these three simple steps to query your Sub 3. Find the _Docs_ tab on the right side of the playground which should open a documentation drawer. This documentation is automatically generated and it helps you find what entities and methods you can query. -Try the following queries to understand how it works for your new SubQuery starter project. Don’t forget to learn more about the [GraphQL Query language](../../run_publish/query.md). +Try the following queries to understand how it works for your new SubQuery starter project. Don’t forget to learn more about the [GraphQL Query language](../../run_publish/query/graphql.md). diff --git a/docs/quickstart/whats-next.md b/docs/quickstart/whats-next.md index 0f1b43610e2..de74b202d04 100644 --- a/docs/quickstart/whats-next.md +++ b/docs/quickstart/whats-next.md @@ -12,7 +12,7 @@ Now that you have a clear understanding of how to build a basic SubQuery project - [Multi-chain indexing support](../build/multi-chain.md) - SubQuery allows you to index data from across different layer-1 networks into the same database, this allows you to query a single endpoint to get data for all supported networks. - [Dynamic Data Sources](../build/dynamicdatasources.md) - When you want to index factory contracts, for example on a DEX or generative NFT project. - - [GraphQL Subscriptions](../run_publish/subscription.md) - Build more reactive front end applications that subscribe to changes in your SubQuery project. + - [GraphQL Subscriptions](../run_publish/query/subscription.md) - Build more reactive front end applications that subscribe to changes in your SubQuery project. - Find out **how to build a performant SubQuery project and avoid common mistakes** in [Project Optimisation](../build/optimisation.md). diff --git a/docs/run_publish/optimisation.md b/docs/run_publish/optimisation.md index 65c7a4edd7f..3849c603773 100644 --- a/docs/run_publish/optimisation.md +++ b/docs/run_publish/optimisation.md @@ -14,7 +14,7 @@ SubQuery runs well behind an API gateway or a DDOS mitigation service. For any p ## Request Caching -Although @subql/node does not natively provide any default request level caching, one of the easiest ways to increase performance when the number of users hitting your SubQuery project increases is by adding a cache in front of the GraphQL endpoint with a basic TTL of a few seconds (depending on how stale you want to allow your data). Most cloud providers offer simple to setup and manage caching solutions (e.g. Redis) that will work well with the GraphQL api endpoints that we provide. If you're worried about stale data affecting your user's experience, by leveraging [GraphQl subscriptions](./subscription.md) you can ensure that the most recent data is never affected by the cache while older, slower data is mostly from the cache. Additionally, consider different TTLs for each different entity. +Although @subql/node does not natively provide any default request level caching, one of the easiest ways to increase performance when the number of users hitting your SubQuery project increases is by adding a cache in front of the GraphQL endpoint with a basic TTL of a few seconds (depending on how stale you want to allow your data). Most cloud providers offer simple to setup and manage caching solutions (e.g. Redis) that will work well with the GraphQL api endpoints that we provide. If you're worried about stale data affecting your user's experience, by leveraging [GraphQl subscriptions](./query/subscription.md) you can ensure that the most recent data is never affected by the cache while older, slower data is mostly from the cache. Additionally, consider different TTLs for each different entity. ## Database Configuration @@ -34,6 +34,6 @@ GraphQL is extremely powerful, but one of the downsides is that it allows users - `--query-timeout` is a flag that will restrict the time each query will be allowed to run for, [read more here](./references.md#query-timeout). - `--max-connection` is a flag that will restrict the number of simultaneous DB connections created by the query endpoint, [read more here](./references.md#max-connection). - `--query-limit` is a flag that allows you to limit the number of results returned by any query and enforce pagination, [read more here](./references.md#query-limit). -- `--unsafe` is a flag that enables some advanced features like [GraphQL aggregations](./aggregate.md), these may have performance impacts, [read more here](./references.md#unsafe-query-service) +- `--unsafe` is a flag that enables some advanced features like [GraphQL aggregations](./query/aggregate.md), these may have performance impacts, [read more here](./references.md#unsafe-query-service) You should also consider reading this excellent guide from Apollo on how they recommend you secure your [GraphQL API from malicious queries](https://www.apollographql.com/blog/graphql/security/securing-your-graphql-api-from-malicious-queries/). diff --git a/docs/run_publish/publish.md b/docs/run_publish/publish.md index 783fd724810..693cca74e3f 100644 --- a/docs/run_publish/publish.md +++ b/docs/run_publish/publish.md @@ -247,7 +247,7 @@ Once your deployment has succesfully completed and our nodes have indexed your d ![Project being deployed and synced](/assets/img/run_publish/projects_deploy_sync.png) -Alternatively, you can click on the three dots next to the title of your project, and view it on SubQuery Explorer. There you can use the in browser playground to get started - [read more about how to use our Explorer's GraphQL playground here](../run_publish/query.md). +Alternatively, you can click on the three dots next to the title of your project, and view it on SubQuery Explorer. There you can use the in browser playground to get started - [read more about how to use our Explorer's GraphQL playground here](../run_publish/query/graphql.md). ![Projects in SubQuery Explorer](/assets/img/run_publish/projects_explorer.png) diff --git a/docs/run_publish/aggregate.md b/docs/run_publish/query/aggregate.md similarity index 94% rename from docs/run_publish/aggregate.md rename to docs/run_publish/query/aggregate.md index 70dea973d85..433a9ba7786 100644 --- a/docs/run_publish/aggregate.md +++ b/docs/run_publish/query/aggregate.md @@ -27,7 +27,7 @@ SubQuery provides the following aggregate functions when in unsafe mode: SubQuery's implementation of aggregate functions is based on [pg-aggregates](https://github.com/graphile/pg-aggregates), you can find more information there. ::: warning Important -Please note that you must enable the `--unsafe` flag on the query service in order to use these functions. [Read more](./references.md#unsafe-query-service). +Please note that you must enable the `--unsafe` flag on the query service in order to use these functions. [Read more](../references.md#unsafe-query-service). Also, note that the `--unsafe` command will prevent your project from being run in the SubQuery Network, and you must contact support if you want this command to be run with your project in [SubQuery's managed service](https://managedservice.subquery.network). ::: diff --git a/docs/run_publish/query.md b/docs/run_publish/query/graphql.md similarity index 76% rename from docs/run_publish/query.md rename to docs/run_publish/query/graphql.md index bbeeda60ee5..5492ce9b453 100644 --- a/docs/run_publish/query.md +++ b/docs/run_publish/query/graphql.md @@ -2,14 +2,14 @@ ::: info Coming from the Graph? -You may want to take a look at the information we have [on the differences](../build/graph-migration.md#graphql-query-differences) between SubQuery's GraphQL library, and The Graph. +You may want to take a look at the information we have [on the differences](../../build/graph-migration.md#graphql-query-differences) between SubQuery's GraphQL library, and The Graph. ::: You can follow the [official GraphQL guide here](https://graphql.org/learn/) to learn more about GraphQL, how it works, and how to use it: -- There are libraries to help you implement GraphQL in [many different languages](https://graphql.org/code/) - we recommend [Apollo Client](https://www.apollographql.com/docs/react/) as it will allow a [seamless migration to our decentralised network](../subquery_network/publish.md#changes-to-your-dapp) when you publish your project in the future. -- You will want to review advice on how to [structure your GraphQL queries to maximise performance](../build/optimisation.md#query-performance-advice). +- There are libraries to help you implement GraphQL in [many different languages](https://graphql.org/code/) - we recommend [Apollo Client](https://www.apollographql.com/docs/react/) as it will allow a [seamless migration to our decentralised network](../../subquery_network/publish.md#changes-to-your-dapp) when you publish your project in the future. +- You will want to review advice on how to [structure your GraphQL queries to maximise performance](../../build/optimisation.md#query-performance-advice). - For an in-depth learning experience with practical tutorials, see [How to GraphQL](https://www.howtographql.com/). - Check out the free online course, [Exploring GraphQL: A Query Language for APIs](https://www.edx.org/course/exploring-graphql-a-query-language-for-apis). diff --git a/docs/run_publish/other_tools/metabase.md b/docs/run_publish/query/other_tools/metabase.md similarity index 89% rename from docs/run_publish/other_tools/metabase.md rename to docs/run_publish/query/other_tools/metabase.md index e14cc846be7..8145b33a552 100644 --- a/docs/run_publish/other_tools/metabase.md +++ b/docs/run_publish/query/other_tools/metabase.md @@ -6,9 +6,9 @@ The objective of this guide is to show you how to analyse data from any SubQuery :::warning Automated Historical State Tracking -When running your project for the sole purpose of visualising in Metabase, we strongly recommending running your project with [Automated Historical State Tracking](../historical.md) disabled. +When running your project for the sole purpose of visualising in Metabase, we strongly recommending running your project with [Automated Historical State Tracking](../../historical.md) disabled. -Automated Historical State Tracking alters the underlying DB tables to manage state tracking for you automatically. However this may make things complicated for Metabase visualisations. You can read more about these alterations [here](../historical.md#db-schema). +Automated Historical State Tracking alters the underlying DB tables to manage state tracking for you automatically. However this may make things complicated for Metabase visualisations. You can read more about these alterations [here](../../historical.md#db-schema). ::: @@ -16,7 +16,7 @@ At a high level, there is no specific configuration required to ensure compatibi For that reason, visualising data in Metabase is not supported in SubQuery decentralised network or Managed Service, you must self host and run your SubQuery Indexing project. -You will want to follow the guide on how to run your [SubQuery indexing project locally](../run.md#running-subquery-locally). Please pay attention to what you set as your Postgres database host, port, username, and password. +You will want to follow the guide on how to run your [SubQuery indexing project locally](../../run.md#running-subquery-locally). Please pay attention to what you set as your Postgres database host, port, username, and password. ## Configuring Metabase @@ -28,7 +28,7 @@ The installation steps are thoroughly documented, ensuring a seamless configurat ![](/assets/img/run_publish/metabase/metabase-database-connection.png) -If you are running your indexer project [locally](../run.md) through Docker, all the requisite information can be found in the `docker-compose.yml` file. When you provide the correct credentials, Metabase will attempt to establish a connection. It will only proceed if the connection is successful. This connection allows Metabase to access the indexed blockchain data, enabling robust analysis and visualisation capabilities. +If you are running your indexer project [locally](../../run.md) through Docker, all the requisite information can be found in the `docker-compose.yml` file. When you provide the correct credentials, Metabase will attempt to establish a connection. It will only proceed if the connection is successful. This connection allows Metabase to access the indexed blockchain data, enabling robust analysis and visualisation capabilities. ## Browse Data diff --git a/docs/run_publish/query/query.md b/docs/run_publish/query/query.md new file mode 100644 index 00000000000..fcb30c2f010 --- /dev/null +++ b/docs/run_publish/query/query.md @@ -0,0 +1,23 @@ +# Query and Access Data from SubQuery SDK + +The default way that most query SubQuery Indexing SDK projects is by the excellent [GraphQL Query service](./graphql.md). + +Native builds of SubQuery running in [Docker](../run.md#using-docker) will automatically include query service (`subql/query`). If you run it locally, you will also [likely run a query service](../run.md#running-the-query-service) instance. + +Both the decentralised SubQuery Network and the SubQuery Managed Service only provide access to SubQuery SDK indexing projects via the GraphQL endpoints exposed by the query service. + +**Please see the docs for how to query your SubQuery project [here](./graphql.md)**. + +## Integrations with other Developer Tools + +SubQuery is open-source, and we are busy creating a rich ecosytem of developer tools that it works well with. + +We now have guides to expose SubQuery data to the following locations. + +- [GraphQL](./graphql.md) - the default query pattern. +- [GraphQL Subscriptions](./subscription.md) - subscribe to updated data as soon as it is indexed. +- [Direct Postgres Access](../run.md#connect-to-database) - you can directly connect to the Postgres data from any other tool or service. +- [Metabase](./other_tools/metabase.md) - an industry leading open-source and free data visualisation and business intelligence tool. +- [CSV Export](../references.md#csv-out-dir) - export indexed datasets to CSV files easily. + +![Integration Ecosystem](/assets/img/run_publish/integration_ecosystem.png) diff --git a/docs/run_publish/subscription.md b/docs/run_publish/query/subscription.md similarity index 100% rename from docs/run_publish/subscription.md rename to docs/run_publish/query/subscription.md diff --git a/docs/run_publish/references.md b/docs/run_publish/references.md index f7868e698e2..5d7d4d83a6a 100644 --- a/docs/run_publish/references.md +++ b/docs/run_publish/references.md @@ -394,7 +394,7 @@ In the case where Worker C completes its fetch prior to Worker A and B, it will ### --aggregate -**Boolean (default: `true`)** - Enables or disables the GraphQL aggregation feature, [read more about this here](../run_publish/aggregate.md). +**Boolean (default: `true`)** - Enables or disables the GraphQL aggregation feature, [read more about this here](../run_publish/query/aggregate.md). ### --disable-hot-schema @@ -480,11 +480,11 @@ We use the [graphql-query-complexity](https://www.npmjs.com/package/graphql-quer ### --subscription -**Boolean** - This flag enables [GraphQL Subscriptions](./subscription.md), to enable this feature requires `subql-node` also enable `--subscription`. +**Boolean** - This flag enables [GraphQL Subscriptions](./query/subscription.md), to enable this feature requires `subql-node` also enable `--subscription`. ### --unsafe (Query Service) -**Boolean** - This flag enables certain aggregation functions including sum, max, avg and others. Read more about this feature [here](../run_publish/aggregate.md). These are disabled by default for database performance reasons. +**Boolean** - This flag enables certain aggregation functions including sum, max, avg and others. Read more about this feature [here](../run_publish/query/aggregate.md). These are disabled by default for database performance reasons. ### --version diff --git a/docs/subquery_network/publish.md b/docs/subquery_network/publish.md index 1b9186cd90d..3cd641809bd 100644 --- a/docs/subquery_network/publish.md +++ b/docs/subquery_network/publish.md @@ -25,7 +25,7 @@ The SubQuery Network is the future of web3 infrastructure, it allows you to comp ## Prerequisites for your project running on Kepler -1. Kepler does not support GraphQL subscriptions, so you can't enable the `--subscription` [command line argument](../run_publish/subscription.md) +1. Kepler does not support GraphQL subscriptions, so you can't enable the `--subscription` [command line argument](../run_publish/query/subscription.md) 2. Your client application (the one that will query data from Kepler) must be able to run a JS library 3. Your project can generate stable proof of indexing results. This means you should avoid: 1. Random ordered DB operations, e.g. avoid using `Promise.all()` in your mapping functions.