use serde::Serialize;
use time::OffsetDateTime;
use crate::serde_utils;
#[derive(Debug, Serialize, Default, Clone)]
pub struct GetAllExecutionsOptions {
#[serde(skip_serializing_if = "Option::is_none")]
symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
order_id: Option<String>,
#[serde(
skip_serializing_if = "Option::is_none",
with = "serde_utils::timestamp_opt"
)]
start_at: Option<OffsetDateTime>,
#[serde(
skip_serializing_if = "Option::is_none",
with = "serde_utils::timestamp_opt"
)]
end_at: Option<OffsetDateTime>,
#[serde(skip_serializing_if = "Option::is_none")]
page: Option<u64>,
}
impl GetAllExecutionsOptions {
#[inline]
pub fn new() -> Self {
Default::default()
}
#[inline]
#[must_use]
pub fn symbol(self, symbol: impl Into<String>) -> Self {
Self {
symbol: Some(symbol.into()),
..self
}
}
#[inline]
#[must_use]
pub fn order_id(self, order_id: impl Into<String>) -> Self {
Self {
order_id: Some(order_id.into()),
..self
}
}
#[inline]
#[must_use]
pub fn start_at(self, start_at: OffsetDateTime) -> Self {
Self {
start_at: Some(start_at),
..self
}
}
#[inline]
#[must_use]
pub fn end_at(self, end_at: OffsetDateTime) -> Self {
Self {
end_at: Some(end_at),
..self
}
}
#[inline]
#[must_use]
pub fn page(self, page: u64) -> Self {
Self {
page: Some(page),
..self
}
}
}