Custom Subgraph queries
Subgraph schemas
To be able to fetch data from the Subgraph, we first have to understand their GraphQL schemas. You can find the schemas associated with each Subgraph included officially with Aragon Connect in the Connectors Reference section.
Creating a custom query
You can use any tool that supports GraphQL, but for simplicity in illustration, we have chosen graphql-tag
in the following examples:
import gql from 'graphql-tag'
import { GraphQLWrapper } from '@aragon/connect-thegraph'
// Construct the query
const QUERY = gql`
query {
votes(where:{
appAddress: "${VOTING_APP_ADDRESS}"
}) {
id
metadata
creator
}
}
`
// Create the GraphQL wrapper using the specific Subgraph URL
const wrapper = new GraphQLWrapper(VOTING_SUBGRAPH_URL)
// Invoke the custom query and receive data
const results = await wrapper.performQuery(QUERY)
const { votes } = results.data
gql
is exposed from graphql-tag
and is a utility that parses strings into structured GraphQL query objects.
Subscriptions
It is also possible to create a subscription to a custom query:
import gql from 'graphql-tag'
import { GraphQLWrapper } from '@aragon/connect-thegraph'
// Construct the query
const QUERY = gql`
query miniMeToken($id: String!, $address: String!) {
miniMeToken(id: $id) {
id
totalSupply
holders(where: { address: $address }) {
address
balance
}
}
}
`
// Create the GraphQL wrapper using the specific Subgraph URL
const wrapper = new GraphQLWrapper(TOKEN_MANAGER_SUBGRAPH)
// Create the subscription and receive updates every time the data changes
const subscription = wrapper.subscribeToQuery(
QUERY,
{
id: TOKEN_ID,
address: ACCOUNT_ADDRES,
},
(error, results) => {
if (error) throw error
// Handle each new result
const { miniMeToken } = results.data
}
)
// Stop receiving updates
subscription.unsubscribe()
Last updated
Was this helpful?