sui_graphql_client/query_types/
packages.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use sui_types::Address;
5
6use crate::query_types::schema;
7use crate::query_types::Base64;
8use crate::query_types::PageInfo;
9
10// ===========================================================================
11// Package by address (and optional version)
12// ===========================================================================
13
14#[derive(cynic::QueryFragment, Debug)]
15#[cynic(schema = "rpc", graphql_type = "Query", variables = "PackageArgs")]
16pub struct PackageQuery {
17    #[arguments(address: $address, version: $version)]
18    pub package: Option<MovePackage>,
19}
20
21// ===========================================================================
22// Latest Package
23// ===========================================================================
24
25#[derive(cynic::QueryFragment, Debug)]
26#[cynic(schema = "rpc", graphql_type = "Query", variables = "PackageArgs")]
27pub struct LatestPackageQuery {
28    #[arguments(address: $address)]
29    pub latest_package: Option<MovePackage>,
30}
31
32#[derive(cynic::QueryVariables, Debug)]
33pub struct PackageArgs {
34    pub address: Address,
35    pub version: Option<u64>,
36}
37
38// ===========================================================================
39// Package By Name
40// ===========================================================================
41
42#[derive(cynic::QueryFragment, Debug)]
43#[cynic(
44    schema = "rpc",
45    graphql_type = "Query",
46    variables = "PackageByNameArgs"
47)]
48pub struct PackageByNameQuery {
49    #[arguments(name: "")]
50    pub package_by_name: Option<MovePackage>,
51}
52
53#[derive(cynic::QueryVariables, Debug)]
54pub struct PackageByNameArgs<'a> {
55    pub name: &'a str,
56}
57
58#[derive(cynic::QueryFragment, Debug)]
59#[cynic(schema = "rpc", graphql_type = "MovePackage")]
60pub struct MovePackage {
61    pub package_bcs: Option<Base64>,
62}
63
64// ===========================================================================
65// Packages
66// ===========================================================================
67
68#[derive(cynic::QueryFragment, Debug)]
69#[cynic(
70    schema = "rpc",
71    graphql_type = "Query",
72    variables = "PackagesQueryArgs"
73)]
74pub struct PackagesQuery {
75    #[arguments(after: $after, before: $before, filter: $filter, first: $first, last: $last)]
76    pub packages: MovePackageConnection,
77}
78
79#[derive(cynic::QueryVariables, Debug)]
80pub struct PackagesQueryArgs<'a> {
81    pub after: Option<&'a str>,
82    pub before: Option<&'a str>,
83    pub filter: Option<PackageCheckpointFilter>,
84    pub first: Option<i32>,
85    pub last: Option<i32>,
86}
87
88#[derive(cynic::InputObject, Debug)]
89#[cynic(schema = "rpc", graphql_type = "MovePackageCheckpointFilter")]
90pub struct PackageCheckpointFilter {
91    pub after_checkpoint: Option<u64>,
92    pub before_checkpoint: Option<u64>,
93}
94
95#[derive(cynic::QueryFragment, Debug)]
96#[cynic(schema = "rpc", graphql_type = "MovePackageConnection")]
97pub struct MovePackageConnection {
98    pub nodes: Vec<MovePackage>,
99    pub page_info: PageInfo,
100}
101
102// ===========================================================================
103// PackagesVersions
104// ===========================================================================
105
106#[derive(cynic::QueryFragment, Debug)]
107#[cynic(
108    schema = "rpc",
109    graphql_type = "Query",
110    variables = "PackageVersionsArgs"
111)]
112pub struct PackageVersionsQuery {
113    #[arguments(address: $address, after: $after, first: $first, last: $last, before: $before, filter:$filter)]
114    pub package_versions: MovePackageConnection,
115}
116
117#[derive(cynic::QueryVariables, Debug)]
118pub struct PackageVersionsArgs<'a> {
119    pub address: Address,
120    pub after: Option<&'a str>,
121    pub first: Option<i32>,
122    pub last: Option<i32>,
123    pub before: Option<&'a str>,
124    pub filter: Option<MovePackageVersionFilter>,
125}
126
127#[derive(cynic::InputObject, Debug)]
128#[cynic(schema = "rpc", graphql_type = "MovePackageVersionFilter")]
129pub struct MovePackageVersionFilter {
130    pub after_version: Option<u64>,
131    pub before_version: Option<u64>,
132}