sui_gql_client/queries/latest_checkpoint.rs
1use graphql_extract::extract;
2
3use crate::queries::Error;
4use crate::queries::model::fragments::Checkpoint;
5use crate::{GraphQlClient, GraphQlResponseExt as _, schema};
6
7pub async fn query<C>(client: &C) -> Result<u64, Error<C::Error>>
8where
9 C: GraphQlClient,
10{
11 let data = client
12 .query::<Query, _>(Variables {})
13 .await
14 .map_err(Error::Client)?
15 .try_into_data()?;
16
17 extract!(data => {
18 checkpoint? {
19 sequence_number
20 }
21 });
22
23 Ok(sequence_number)
24}
25
26#[derive(cynic::QueryVariables, Debug)]
27struct Variables {}
28
29#[derive(cynic::QueryFragment, Debug)]
30#[cynic(variables = "Variables")]
31struct Query {
32 checkpoint: Option<Checkpoint>,
33}
34
35#[cfg(test)]
36#[allow(clippy::unwrap_used)]
37#[test]
38fn gql_output() {
39 use cynic::QueryBuilder as _;
40
41 let vars = Variables {};
42 let operation = Query::build(vars);
43 insta::assert_snapshot!(operation.query, @r###"
44 query Query {
45 checkpoint {
46 sequenceNumber
47 }
48 }
49 "###);
50}