fuel_core_client/client/schema/
upgrades.rs1use crate::client::schema::schema;
2
3use crate::client::{
4 schema::{
5 chain::ConsensusParameters,
6 primitives::HexString,
7 },
8 ConversionError,
9};
10
11use fuel_core_types::fuel_vm::UploadedBytecode as VmUploadedBytecode;
12
13#[derive(cynic::QueryVariables, Debug)]
14pub struct ConsensusParametersByVersionArgs {
15 pub version: i32,
16}
17
18#[derive(cynic::QueryFragment, Clone, Debug)]
19#[cynic(
20 schema_path = "./assets/schema.sdl",
21 graphql_type = "Query",
22 variables = "ConsensusParametersByVersionArgs"
23)]
24pub struct ConsensusParametersByVersionQuery {
25 #[arguments(version: $version)]
26 pub consensus_parameters: Option<ConsensusParameters>,
27}
28
29#[derive(cynic::QueryVariables, Debug)]
30pub struct StateTransitionBytecodeByVersionArgs {
31 pub version: i32,
32}
33
34#[derive(cynic::QueryFragment, Clone, Debug)]
35#[cynic(
36 schema_path = "./assets/schema.sdl",
37 graphql_type = "Query",
38 variables = "StateTransitionBytecodeByVersionArgs"
39)]
40pub struct StateTransitionBytecodeByVersionQuery {
41 #[arguments(version: $version)]
42 pub state_transition_bytecode_by_version: Option<StateTransitionBytecode>,
43}
44
45#[derive(cynic::QueryVariables, Debug)]
46pub struct StateTransitionBytecodeByRootArgs {
47 pub root: HexString,
48}
49
50#[derive(cynic::QueryFragment, Clone, Debug)]
51#[cynic(
52 schema_path = "./assets/schema.sdl",
53 graphql_type = "Query",
54 variables = "StateTransitionBytecodeByRootArgs"
55)]
56pub struct StateTransitionBytecodeByRootQuery {
57 #[arguments(root: $root)]
58 pub state_transition_bytecode_by_root: Option<StateTransitionBytecode>,
59}
60
61#[derive(cynic::QueryFragment, Clone, Debug)]
62#[cynic(schema_path = "./assets/schema.sdl")]
63pub struct StateTransitionBytecode {
64 pub root: HexString,
65 pub bytecode: UploadedBytecode,
66}
67
68#[derive(cynic::QueryFragment, Clone, Debug)]
69#[cynic(schema_path = "./assets/schema.sdl")]
70pub struct UploadedBytecode {
71 pub bytecode: HexString,
72 pub uploaded_subsections_number: Option<i32>,
73 pub completed: bool,
74}
75
76impl TryFrom<UploadedBytecode> for VmUploadedBytecode {
79 type Error = ConversionError;
80 fn try_from(value: UploadedBytecode) -> Result<Self, Self::Error> {
81 Ok(match value.completed {
82 true => Self::Completed(value.bytecode.into()),
83 false => Self::Uncompleted {
84 bytecode: value.bytecode.into(),
85 uploaded_subsections_number: value
86 .uploaded_subsections_number
87 .ok_or_else(|| {
88 ConversionError::MissingField(
89 "uploaded_subsections_number".to_string(),
90 )
91 })?
92 .try_into()?,
93 },
94 })
95 }
96}