diff options
Diffstat (limited to 'rust_backend/src/market')
| -rw-r--r-- | rust_backend/src/market/mod.rs | 3 | ||||
| -rw-r--r-- | rust_backend/src/market/order.rs | 83 | ||||
| -rw-r--r-- | rust_backend/src/market/trade.rs | 63 |
3 files changed, 0 insertions, 149 deletions
diff --git a/rust_backend/src/market/mod.rs b/rust_backend/src/market/mod.rs deleted file mode 100644 index 16d1f37..0000000 --- a/rust_backend/src/market/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -mod order; - -pub use order::{Order, Orders};
\ No newline at end of file diff --git a/rust_backend/src/market/order.rs b/rust_backend/src/market/order.rs deleted file mode 100644 index 6dbbcf6..0000000 --- a/rust_backend/src/market/order.rs +++ /dev/null @@ -1,83 +0,0 @@ -use std::error::Error; -use std::collections::HashMap; - -use chrono::{DateTime, Utc}; -use serde::{Deserialize, Serialize}; - -use crate::eve_service::EveService; - - -#[derive(Debug, Serialize, Deserialize, Clone)] -pub struct Order { - duration: u64, - is_buy_order: bool, - issued: DateTime<Utc>, - location_id: u64, - min_volume: u64, - order_id: u64, - price: f64, - range: String, - system_id: u64, - type_id: u64, - volume_remain: u64, - volume_total: u64 -} - -const REGIONS: [u64; 1] = [10000033]; - -#[derive(Clone, Serialize)] -pub struct Orders { - region_orders: HashMap<u64, Vec<Order>>, - expiry_times: HashMap<u64, DateTime<Utc>>, // region_id to expiration time -} - - -impl Orders { - pub fn new() -> Self { - Orders { - region_orders: HashMap::new(), - expiry_times: HashMap::new(), - } - } - - pub fn insert(&mut self, region: u64, orders: Vec<Order>, expiry: DateTime<Utc>) { - self.region_orders.insert(region, orders); - self.expiry_times.insert(region, expiry); - } - - pub fn expired_regions(&self) -> Vec<u64> { - let current_time = Utc::now(); - - println!("expiry: {:?}, time now: {:?}", &self.expiry_times, ¤t_time); - - let mut expired: Vec<u64> = self.expiry_times.iter() - .filter(|&(_region_id, &expiry_time)| expiry_time < current_time) - .map(|(®ion_id, _)| region_id) - .collect(); - - for ®ion in REGIONS.iter() { - if !self.expiry_times.contains_key(®ion) { - expired.push(region); - } - } - - - expired - - } - - pub fn update(&mut self, updated_orders: Orders) { - for (key, value) in updated_orders.region_orders { - self.region_orders.insert(key, value); - - if let Some(expiry_time) = updated_orders.expiry_times.get(&key) { - self.expiry_times.insert(key, *expiry_time); - } - } - } - - - pub fn orders(&self) -> Vec<Order> { - self.region_orders.values().flat_map(|orders| orders.clone()).collect() - } -}
\ No newline at end of file diff --git a/rust_backend/src/market/trade.rs b/rust_backend/src/market/trade.rs deleted file mode 100644 index 362acbf..0000000 --- a/rust_backend/src/market/trade.rs +++ /dev/null @@ -1,63 +0,0 @@ -use crate::order::Order; - -pub struct Trade<'a> { - from: &'a Order, - to: &'a Order, - quantity: usize, - gross_profit: f64, -} - -const TAX_RATE: f64 = 0.08 - -impl<'a> Trade<'a> { - pub fn new(from: &'a Order, to: &'a Order, quantity: usize) -> Self { - Self { from, to, quantity } - } - - pub fn create_trades(sell_orders: &'a [Order], buy_orders: &'a [Order]) -> Vec<Trade<'a>> { - let mut trades: Vec<Trade<'a>> = Vec::new(); - let mut grouped_orders: HashMap<i32, (Vec<&'a Order>, Vec<&'a Order>)> = HashMap::new(); - - // Grouping sell orders - for order in sell_orders { - grouped_orders.entry(order.type_id) - .or_insert((Vec::new(), Vec::new())) - .0 - .push(order); - } - - // Grouping buy orders - for order in buy_orders { - grouped_orders.entry(order.type_id) - .or_insert((Vec::new(), Vec::new())) - .1 - .push(order); - } - - // Iterating over each type_id's sell and buy orders to create trades - for (_type_id, (sells, buys)) in grouped_orders { - for &sell_order in sells { - for &buy_order in buys { - let quantity = std::cmp::min(sell_order.volume_remain, buy_order.volume_remain); - let gross_profit = quantity as f64 * (buy_order.price * (1-TAX_RATE) - sell_order.price); - - if gross_profit <= 0.0 { - continue; - } - - let trade = Trade::new( - sell_order, - buy_order, - quantity, - gross_profit, - ); - - trades.push(trade); - } - } - } - - trades - } - -} |
