near_jsonrpc_primitives/types/
changes.rs1#[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}