crypto_pay_api/models/transfer/
params.rs1use rust_decimal::Decimal;
2use serde::Serialize;
3
4use crate::{
5 models::CryptoCurrencyCode,
6 utils::{serialize_comma_separated_list, serialize_decimal_to_string},
7};
8
9#[derive(Debug, Serialize)]
10pub struct GetTransfersParams {
11 #[serde(skip_serializing_if = "Option::is_none")]
14 pub(crate) asset: Option<CryptoCurrencyCode>,
15
16 #[serde(
18 serialize_with = "serialize_comma_separated_list",
19 skip_serializing_if = "GetTransfersParams::should_skip_transfer_ids"
20 )]
21 pub(crate) transfer_ids: Option<Vec<u64>>,
22
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub(crate) spend_id: Option<String>,
26
27 #[serde(skip_serializing_if = "Option::is_none")]
30 pub(crate) offset: Option<u32>,
31
32 #[serde(skip_serializing_if = "Option::is_none")]
36 pub(crate) count: Option<u16>,
37}
38
39impl GetTransfersParams {
40 fn should_skip_transfer_ids(ids: &Option<Vec<u64>>) -> bool {
41 !matches!(ids, Some(ids) if !ids.is_empty())
42 }
43 pub(crate) fn new(
44 asset: Option<CryptoCurrencyCode>,
45 transfer_ids: Option<Vec<u64>>,
46 spend_id: Option<String>,
47 offset: Option<u32>,
48 count: Option<u16>,
49 ) -> Self {
50 Self {
51 asset,
52 transfer_ids,
53 spend_id,
54 offset,
55 count,
56 }
57 }
58}
59
60#[derive(Debug, Serialize)]
61pub struct TransferParams {
62 pub(crate) user_id: u64,
64
65 pub(crate) asset: CryptoCurrencyCode,
67
68 #[serde(serialize_with = "serialize_decimal_to_string")]
72 pub(crate) amount: Decimal,
73
74 pub(crate) spend_id: String,
78
79 #[serde(skip_serializing_if = "Option::is_none")]
83 pub(crate) comment: Option<String>,
84
85 #[serde(skip_serializing_if = "Option::is_none")]
88 pub(crate) disable_send_notification: Option<bool>,
89}