use rust_decimal::Decimal;
use serde::Serialize;
use crate::{
models::CryptoCurrencyCode,
utils::{serialize_comma_separated_list, serialize_decimal_to_string},
};
use super::CheckStatus;
#[derive(Debug, Serialize)]
pub struct CreateCheckParams {
pub(crate) asset: CryptoCurrencyCode,
#[serde(serialize_with = "serialize_decimal_to_string")]
pub(crate) amount: Decimal,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) pin_to_user_id: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) pin_to_username: Option<String>,
}
#[derive(Debug, Default, Serialize)]
pub struct GetChecksParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) asset: Option<CryptoCurrencyCode>,
#[serde(
serialize_with = "serialize_comma_separated_list",
skip_serializing_if = "GetChecksParams::should_skip_check_ids"
)]
pub(crate) check_ids: Option<Vec<u64>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) status: Option<CheckStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) offset: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub(crate) count: Option<u16>,
}
impl GetChecksParams {
fn should_skip_check_ids(check_ids: &Option<Vec<u64>>) -> bool {
!matches!(check_ids, Some(check_ids) if !check_ids.is_empty())
}
}
#[derive(Debug, Serialize)]
pub struct DeleteCheckParams {
pub check_id: u64,
}