xpx_chain_sdk/api/
transaction_query_params.rs

1/*
2 * Copyright 2018 ProximaX Limited. All rights reserved.
3 * Use of this source code is governed by the Apache 2.0
4 * license that can be found in the LICENSE file.
5 */
6
7use crate::api::OrderV2;
8use crate::transaction::{Height, TransactionType};
9
10#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
11pub struct TransactionSortingField(&'static str);
12
13#[derive(Clone, Debug, Default, Eq, PartialEq, Builder, Serialize)]
14#[builder(setter(into, strip_option), default, create_empty = "empty")]
15#[serde(rename_all = "camelCase")]
16pub struct TransactionQueryParams {
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub(crate) page_size: Option<u16>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub(crate) page_number: Option<u16>,
21    pub(crate) r#type: Vec<TransactionType>,
22    pub(crate) embedded: bool,
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub(crate) order: Option<OrderV2>,
25    #[serde(skip_serializing_if = "Option::is_none")]
26    pub(crate) sort_field: Option<TransactionSortingField>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    pub(crate) to_height: Option<Height>,
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub(crate) from_height: Option<Height>,
31    #[serde(skip_serializing_if = "Option::is_none")]
32    pub(crate) height: Option<Height>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    pub(crate) signer_public_key: Option<String>,
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub(crate) recipient_address: Option<String>,
37    #[serde(skip_serializing_if = "Option::is_none")]
38    address: Option<String>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    pub(crate) public_key: Option<String>,
41    #[builder(default = "true")]
42    pub(crate) first_level: bool, // default true,
43}
44
45impl TransactionQueryParams {
46    pub fn create() -> TransactionQueryParamsBuilder {
47        TransactionQueryParamsBuilder::default()
48    }
49
50    /// Serializes a `TransactionQueryParams` into a query string.
51    ///
52    pub fn to_query_string(&self) -> String {
53        qs::to_string(self).unwrap()
54    }
55}