xpx_chain_sdk/api/
metadata_query_params.rs1use 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 #[must_use]
50 pub fn builder() -> MetadataQueryParamsBuilder {
51 MetadataQueryParamsBuilder::default()
52 }
53
54 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}