cometbft_rpc/endpoint/
block_search.rs

1//! `/block_search` endpoint JSON-RPC wrapper
2
3use serde::{Deserialize, Serialize};
4
5pub use super::{block, block_results};
6use crate::{dialect::Dialect, prelude::*, request::RequestMessage, serializers, Method, Order};
7
8/// Request for searching for blocks by their BeginBlock and EndBlock events.
9#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
10pub struct Request {
11    pub query: String,
12    #[serde(with = "serializers::from_str")]
13    pub page: u32,
14    #[serde(with = "serializers::from_str")]
15    pub per_page: u8,
16    pub order_by: Order,
17}
18
19impl Request {
20    /// Constructor.
21    pub fn new(query: impl ToString, page: u32, per_page: u8, order_by: Order) -> Self {
22        Self {
23            query: query.to_string(),
24            page,
25            per_page,
26            order_by,
27        }
28    }
29}
30
31impl RequestMessage for Request {
32    fn method(&self) -> Method {
33        Method::BlockSearch
34    }
35}
36
37impl<S: Dialect> crate::Request<S> for Request {
38    type Response = Response;
39}
40
41impl<S: Dialect> crate::SimpleRequest<S> for Request {
42    type Output = Response;
43}
44
45#[derive(Clone, Debug, Deserialize, Serialize)]
46pub struct Response {
47    pub blocks: Vec<block::Response>,
48    #[serde(with = "serializers::from_str")]
49    pub total_count: u32,
50}
51
52impl crate::Response for Response {}