use crate::models::order_type::Type;
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct Order {
#[serde(rename = "creationTime", skip_serializing_if = "Option::is_none")]
pub creation_time: Option<String>,
#[serde(rename = "filledQuantity", skip_serializing_if = "Option::is_none")]
pub filled_quantity: Option<f32>,
#[serde(rename = "filledValue", skip_serializing_if = "Option::is_none")]
pub filled_value: Option<f32>,
#[serde(rename = "id")]
pub id: i64,
#[serde(rename = "limitPrice", skip_serializing_if = "Option::is_none")]
pub limit_price: Option<f32>,
#[serde(rename = "quantity", skip_serializing_if = "Option::is_none")]
pub quantity: Option<f32>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<Status>,
#[serde(rename = "stopPrice", skip_serializing_if = "Option::is_none")]
pub stop_price: Option<f32>,
#[serde(rename = "strategy", skip_serializing_if = "Option::is_none")]
pub strategy: Option<Strategy>,
#[serde(rename = "ticker", skip_serializing_if = "Option::is_none")]
pub ticker: Option<String>,
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<Type>,
#[serde(rename = "value", skip_serializing_if = "Option::is_none")]
pub value: Option<f32>,
}
impl Order {
#[must_use]
pub const fn new() -> Self {
Self {
creation_time: None,
filled_quantity: None,
filled_value: None,
id: 0,
limit_price: None,
quantity: None,
status: None,
stop_price: None,
strategy: None,
ticker: None,
r#type: None,
value: None,
}
}
}
impl Default for Order {
fn default() -> Self {
Self::new()
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "LOCAL")]
Local,
#[serde(rename = "UNCONFIRMED")]
Unconfirmed,
#[serde(rename = "CONFIRMED")]
Confirmed,
#[serde(rename = "NEW")]
New,
#[serde(rename = "CANCELLING")]
Cancelling,
#[serde(rename = "CANCELLED")]
Cancelled,
#[serde(rename = "PARTIALLY_FILLED")]
PartiallyFilled,
#[serde(rename = "FILLED")]
Filled,
#[serde(rename = "REJECTED")]
Rejected,
#[serde(rename = "REPLACING")]
Replacing,
#[serde(rename = "REPLACED")]
Replaced,
}
impl Default for Status {
fn default() -> Self {
Self::Local
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Strategy {
#[serde(rename = "QUANTITY")]
Quantity,
#[serde(rename = "VALUE")]
Value,
}
impl Default for Strategy {
fn default() -> Self {
Self::Quantity
}
}