unc_jsonrpc_primitives/types/
changes.rs1#[derive(Debug, serde::Serialize, serde::Deserialize)]
2pub struct RpcStateChangesInBlockRequest {
3 #[serde(flatten)]
4 pub block_reference: unc_primitives::types::BlockReference,
5}
6
7#[derive(Debug, serde::Serialize, serde::Deserialize)]
8pub struct RpcStateChangesInBlockResponse {
9 pub block_hash: unc_primitives::hash::CryptoHash,
10 pub changes: unc_primitives::views::StateChangesView,
11}
12
13#[derive(Debug, serde::Serialize, serde::Deserialize)]
14pub struct RpcStateChangesInBlockByTypeRequest {
15 #[serde(flatten)]
16 pub block_reference: unc_primitives::types::BlockReference,
17 #[serde(flatten)]
18 pub state_changes_request: unc_primitives::views::StateChangesRequestView,
19}
20
21#[derive(Debug, serde::Serialize, serde::Deserialize)]
22pub struct RpcStateChangesInBlockByTypeResponse {
23 pub block_hash: unc_primitives::hash::CryptoHash,
24 pub changes: unc_primitives::views::StateChangesKindsView,
25}
26
27#[derive(thiserror::Error, Debug, serde::Serialize, serde::Deserialize)]
28#[serde(tag = "name", content = "info", rename_all = "SCREAMING_SNAKE_CASE")]
29pub enum RpcStateChangesError {
30 #[error("Block not found: {error_message}")]
31 UnknownBlock {
32 #[serde(skip_serializing)]
33 error_message: String,
34 },
35 #[error("There are no fully synchronized blocks yet")]
36 NotSyncedYet,
37 #[error("The node reached its limits. Try again later. More details: {error_message}")]
38 InternalError { error_message: String },
39}
40
41impl From<RpcStateChangesError> for crate::errors::RpcError {
42 fn from(error: RpcStateChangesError) -> Self {
43 let error_data = match serde_json::to_value(error) {
44 Ok(value) => value,
45 Err(err) => {
46 return Self::new_internal_error(
47 None,
48 format!("Failed to serialize RpcStateChangesError: {:?}", err),
49 )
50 }
51 };
52 Self::new_internal_or_handler_error(Some(error_data.clone()), error_data)
53 }
54}