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}