mod create;
use std::str::FromStr;
pub use create::*;
mod delete;
pub use delete::*;
mod get;
pub use get::*;
mod replace;
pub use replace::*;
use serde::{Deserialize, Serialize};
pub type AllOrders = Vec<Order>;
#[derive(Deserialize, Serialize, Debug)]
pub struct Order {
pub id: String,
pub client_order_id: Option<String>,
pub created_at: Option<String>,
pub updated_at: Option<String>,
pub submitted_at: Option<String>,
pub filled_at: Option<String>,
pub expired_at: Option<String>,
pub canceled_at: Option<String>,
pub failed_at: Option<String>,
pub replaced_at: Option<String>,
pub replaced_by: Option<String>,
pub replaces: Option<String>,
pub asset_id: Option<String>,
pub symbol: String,
pub asset_class: Option<String>,
pub notional: Option<String>,
pub qty: Option<String>,
pub filled_qty: Option<String>,
pub filled_avg_price: Option<String>,
pub order_class: Option<String>,
pub order_type: String,
pub r#type: String,
pub side: String,
pub time_in_force: Option<String>,
pub limit_price: Option<String>,
pub stop_price: Option<String>,
pub status: String,
pub extended_hours: bool,
pub legs: Option<Vec<Self>>,
pub trail_percent: Option<String>,
pub trail_price: Option<String>,
pub hwm: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub enum OrderSide {
Buy,
Sell,
}
impl ToString for OrderSide {
fn to_string(&self) -> String {
match self {
OrderSide::Buy => "buy".to_string(),
OrderSide::Sell => "sell".to_string(),
}
}
}
impl FromStr for OrderSide {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s {
"buy" => Ok(OrderSide::Buy),
"sell" => Ok(OrderSide::Sell),
"Buy" => Ok(OrderSide::Buy),
"Sell" => Ok(OrderSide::Sell),
_ => Err(()),
}
}
}