sui_gql_client/queries/
objects_flat.rs

1use cynic::QueryFragment;
2
3use super::fragments::{ObjectFilterV2, PageInfoForward};
4use crate::schema;
5
6/// Paged object data where the `Object` fragment does take any parameters.
7#[derive(cynic::QueryFragment, Clone, Debug)]
8#[cynic(variables = "Variables")]
9pub(crate) struct Query<Object>
10where
11    Object: QueryFragment<SchemaType = schema::Object, VariablesFields = ()>,
12{
13    #[arguments(filter: $filter, first: $first, after: $after)]
14    pub objects: ObjectConnection<Object>,
15}
16
17impl<Object> Query<Object> where
18    Object: QueryFragment<SchemaType = schema::Object, VariablesFields = ()>
19{
20}
21
22// =============================================================================
23//  Variables
24// =============================================================================
25
26#[derive(cynic::QueryVariables, Clone, Debug)]
27pub(crate) struct Variables<'a> {
28    pub filter: Option<ObjectFilterV2<'a>>,
29    pub after: Option<String>,
30    pub first: Option<i32>,
31}
32
33impl super::stream::UpdatePageInfo for Variables<'_> {
34    fn update_page_info(&mut self, info: &super::fragments::PageInfo) {
35        self.after.clone_from(&info.end_cursor)
36    }
37}
38
39// =============================================================================
40//  Inner query fragments
41// =============================================================================
42
43/// `ObjectConnection` where the `Object` fragment does take any parameters.
44#[derive(cynic::QueryFragment, Clone, Debug)]
45#[cynic(graphql_type = "ObjectConnection")]
46pub(crate) struct ObjectConnection<Object>
47where
48    Object: QueryFragment<SchemaType = schema::Object, VariablesFields = ()>,
49{
50    pub nodes: Vec<Object>,
51    pub page_info: PageInfoForward,
52}