sui_gql_client/queries/
latest_checkpoint.rs

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