near_jsonrpc_primitives/types/
changes.rs

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