sui_graphql_client_build/
lib.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4#![doc = include_str!("../README.md")]
5
6/// Register the schema to enable building custom queries using cynic derive macros queries. Call
7/// this function in a `build.rs` file in your crate if you need to build custom queries.
8///
9/// Examples
10/// ```rust,ignore
11/// // build.rs file
12/// fn main() {
13///     let schema_name = "MYSCHEMA"
14///     sui_graphql_client_build::register_schema(schema_name);
15/// }
16///
17/// // Cargo.toml
18/// ...
19/// [dependencies]
20/// cynic = "3.8.0"
21/// ...
22/// [build-dependencies]
23/// sui_graphql_client_build = "VERSION_HERE"
24///
25/// // lib.rs
26/// // Custom query
27/// use cynic::QueryBuilder;
28/// use sui_graphql_client::{query_types::schema, Client};
29///
30/// #[derive(cynic::QueryFragment, Debug)]
31/// #[cynic(schema = "MYSCHEMA", graphql_type = "Query")]
32/// pub struct MyQuery {
33///    pub chain_identifier: String,
34/// }
35///
36/// #[tokio::main]
37/// async fn main() {
38///     let client = Client::new_mainnet();
39///     let operation = MyQuery::build(());
40///     let q = client.run_query(&operation).await.unwrap();
41///     println!("{:?}", q);
42/// }
43/// ```
44pub fn register_schema(schema_name: &str) {
45    let sdl = include_str!("../schema.graphql");
46    cynic_codegen::register_schema(schema_name)
47        .from_sdl(sdl)
48        .expect("Failed to find GraphQL Schema")
49        .as_default()
50        .unwrap();
51}