xpx_chain_sdk/api/
metadata_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::metadata::MetadataV2Type;
9use crate::mosaic::UnresolvedMosaicId;
10
11#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
12pub struct MetadataSortingField(&'static str);
13
14#[derive(Clone, Debug, PartialEq, Builder, Serialize)]
15#[builder(setter(into), create_empty = "empty", build_fn(error = "crate::api::error::Error"))]
16#[serde(rename_all = "camelCase")]
17pub struct MetadataQueryParams {
18    #[serde(skip_serializing_if = "Option::is_none")]
19    #[builder(default)]
20    pub(crate) page_size: Option<u16>,
21    #[serde(skip_serializing_if = "Option::is_none")]
22    #[builder(default)]
23    pub(crate) page_number: Option<u16>,
24    #[serde(skip_serializing_if = "Option::is_none")]
25    #[builder(default)]
26    pub(crate) metadata_type: Option<MetadataV2Type>,
27    #[serde(skip_serializing_if = "Option::is_none")]
28    #[builder(default)]
29    pub(crate) order: Option<OrderV2>,
30    #[serde(skip_serializing_if = "Option::is_none")]
31    #[builder(default)]
32    pub(crate) sort_field: Option<MetadataSortingField>,
33    #[serde(skip_serializing_if = "Option::is_none")]
34    #[builder(default)]
35    pub(crate) source_address: Option<String>,
36    #[serde(skip_serializing_if = "Option::is_none")]
37    #[builder(default)]
38    pub(crate) target_id: Option<Box<dyn UnresolvedMosaicId>>,
39    #[serde(skip_serializing_if = "Option::is_none")]
40    #[builder(default)]
41    pub(crate) target_key: Option<String>,
42    #[serde(skip_serializing_if = "Option::is_none")]
43    #[builder(default)]
44    pub(crate) scoped_metadata_key: Option<String>,
45}
46
47impl MetadataQueryParams {
48    /// Build a `MetadataQueryParams` from the defaults
49    #[must_use]
50    pub fn builder() -> MetadataQueryParamsBuilder {
51        MetadataQueryParamsBuilder::default()
52    }
53
54    /// Serializes a `MetadataQueryParams` into a query string.
55    ///
56    pub fn to_query_string(&self) -> String {
57        qs::to_string(self).unwrap()
58    }
59}
60
61impl TryFrom<&mut MetadataQueryParamsBuilder> for MetadataQueryParams {
62    type Error = crate::api::error::Error;
63
64    fn try_from(builder: &mut MetadataQueryParamsBuilder) -> Result<Self, Self::Error> {
65        builder.build()
66    }
67}