Skip to main content

fuel_core_client/client/schema/
storage.rs

1use crate::client::schema::{
2    AssetId,
3    Bytes32,
4    ContractId,
5    HexString,
6    U32,
7    contract::ContractBalance,
8    schema,
9};
10use fuel_core_types::fuel_tx;
11
12#[derive(cynic::QueryFragment, Clone, Debug)]
13#[cynic(
14    schema_path = "./assets/schema.sdl",
15    graphql_type = "Subscription",
16    variables = "ContractStorageSlotsArgs"
17)]
18pub struct ContractStorageSlots {
19    #[arguments(contractId: $contract_id)]
20    pub contract_storage_slots: StorageSlot,
21}
22
23#[derive(cynic::QueryVariables, Debug, Clone)]
24pub struct ContractStorageSlotsArgs {
25    /// The ID of the contract.
26    pub contract_id: ContractId,
27}
28
29#[derive(cynic::QueryFragment, Clone, Debug)]
30#[cynic(
31    schema_path = "./assets/schema.sdl",
32    graphql_type = "Query",
33    variables = "ContractSlotValuesArgs"
34)]
35pub struct ContractSlotValues {
36    #[arguments(contractId: $contract_id, blockHeight: $block_height, storageSlots: $storage_slots)]
37    pub contract_slot_values: Vec<StorageSlot>,
38}
39
40#[derive(cynic::QueryVariables, Debug, Clone)]
41pub struct ContractSlotValuesArgs {
42    pub contract_id: ContractId,
43    pub block_height: Option<U32>,
44    pub storage_slots: Vec<Bytes32>,
45}
46
47#[derive(cynic::QueryFragment, Clone, Debug)]
48#[cynic(schema_path = "./assets/schema.sdl")]
49pub struct StorageSlot {
50    pub key: Bytes32,
51    pub value: HexString,
52}
53
54impl From<StorageSlot> for (fuel_tx::Bytes32, Vec<u8>) {
55    fn from(value: StorageSlot) -> Self {
56        (value.key.into(), value.value.into())
57    }
58}
59
60#[derive(cynic::QueryFragment, Clone, Debug)]
61#[cynic(
62    schema_path = "./assets/schema.sdl",
63    graphql_type = "Subscription",
64    variables = "ContractStorageBalancesArgs"
65)]
66pub struct ContractStorageBalances {
67    #[arguments(contractId: $contract_id)]
68    pub contract_storage_balances: ContractBalance,
69}
70
71#[derive(cynic::QueryVariables, Debug, Clone)]
72pub struct ContractStorageBalancesArgs {
73    /// The ID of the contract.
74    pub contract_id: ContractId,
75}
76
77#[derive(cynic::QueryFragment, Clone, Debug)]
78#[cynic(
79    schema_path = "./assets/schema.sdl",
80    graphql_type = "Query",
81    variables = "ContractBalanceValuesArgs"
82)]
83pub struct ContractBalanceValues {
84    #[arguments(contractId: $contract_id, blockHeight: $block_height, assets: $assets)]
85    pub contract_balance_values: Vec<ContractBalance>,
86}
87
88#[derive(cynic::QueryVariables, Debug, Clone)]
89pub struct ContractBalanceValuesArgs {
90    pub contract_id: ContractId,
91    pub block_height: Option<U32>,
92    pub assets: Vec<AssetId>,
93}