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}