fuel_gql_client/client/schema/
chain.rs1use crate::client::schema::{
2 block::Block,
3 schema,
4 U64,
5};
6use fuel_vm::fuel_tx::ConsensusParameters as TxConsensusParameters;
7
8#[derive(cynic::QueryFragment, Debug)]
9#[cynic(schema_path = "./assets/schema.sdl")]
10pub struct ConsensusParameters {
11 pub contract_max_size: U64,
12 pub max_inputs: U64,
13 pub max_outputs: U64,
14 pub max_witnesses: U64,
15 pub max_gas_per_tx: U64,
16 pub max_script_length: U64,
17 pub max_script_data_length: U64,
18 pub max_storage_slots: U64,
19 pub max_predicate_length: U64,
20 pub max_predicate_data_length: U64,
21 pub gas_price_factor: U64,
22 pub gas_per_byte: U64,
23 pub max_message_data_length: U64,
24}
25
26impl From<ConsensusParameters> for TxConsensusParameters {
27 fn from(params: ConsensusParameters) -> Self {
28 Self {
29 contract_max_size: params.contract_max_size.into(),
30 max_inputs: params.max_inputs.into(),
31 max_outputs: params.max_outputs.into(),
32 max_witnesses: params.max_witnesses.into(),
33 max_gas_per_tx: params.max_gas_per_tx.into(),
34 max_script_length: params.max_script_length.into(),
35 max_script_data_length: params.max_script_data_length.into(),
36 max_storage_slots: params.max_storage_slots.into(),
37 max_predicate_length: params.max_predicate_length.into(),
38 max_predicate_data_length: params.max_predicate_data_length.into(),
39 gas_price_factor: params.gas_price_factor.into(),
40 gas_per_byte: params.gas_per_byte.into(),
41 max_message_data_length: params.max_message_data_length.into(),
42 }
43 }
44}
45
46#[derive(cynic::QueryFragment, Debug)]
47#[cynic(schema_path = "./assets/schema.sdl", graphql_type = "Query")]
48pub struct ChainQuery {
49 pub chain: ChainInfo,
50}
51
52#[derive(cynic::QueryFragment, Debug)]
53#[cynic(schema_path = "./assets/schema.sdl")]
54pub struct ChainInfo {
55 pub base_chain_height: U64,
56 pub name: String,
57 pub peer_count: i32,
58 pub latest_block: Block,
59 pub consensus_parameters: ConsensusParameters,
60}
61
62#[cfg(test)]
63mod tests {
64 use super::*;
65
66 #[test]
67 fn chain_gql_query_output() {
68 use cynic::QueryBuilder;
69 let operation = ChainQuery::build(());
70 insta::assert_snapshot!(operation.query)
71 }
72}