1use crate::market::{derive_sec_market, strip_market_prefix};
9
10#[must_use]
15pub fn order_trade_time_type_to_session(order_trade_time_type: Option<u32>) -> Option<i32> {
16 match order_trade_time_type? {
17 0 => Some(0), 1 => Some(1), 2 => Some(2), 3 => Some(4), 6 => Some(3), _ => Some(0), }
24}
25
26pub fn response_sec_market_for_trade_read(
27 cached_sec_market: Option<i32>,
28 trd_market: Option<i32>,
29 fallback_trd_market: i32,
30 code: &str,
31) -> Option<i32> {
32 if let Some(sec_market) = cached_sec_market.filter(|v| *v != 0) {
33 return Some(sec_market);
34 }
35 let derived = derive_sec_market(0, trd_market.unwrap_or(fallback_trd_market), code);
36 (derived != 0).then_some(derived)
37}
38
39pub fn response_trd_market_for_trade_read(
40 cached_trd_market: Option<i32>,
41 fallback_trd_market: i32,
42) -> Option<i32> {
43 cached_trd_market.or_else(|| (fallback_trd_market != 0).then_some(fallback_trd_market))
44}
45
46pub fn response_order_trd_market_for_trade_read(
47 trd_env: i32,
48 cached_trd_market: Option<i32>,
49 fallback_trd_market: i32,
50) -> Option<i32> {
51 if trd_env == 0 {
56 return (fallback_trd_market != 0).then_some(fallback_trd_market);
57 }
58 response_trd_market_for_trade_read(cached_trd_market, fallback_trd_market)
59}
60
61pub fn response_order_sec_market_for_trade_read(
62 trd_env: i32,
63 cached_sec_market: Option<i32>,
64 cached_trd_market: Option<i32>,
65 fallback_trd_market: i32,
66 code: &str,
67) -> Option<i32> {
68 if trd_env != 0 {
69 return response_sec_market_for_trade_read(
70 cached_sec_market,
71 cached_trd_market,
72 fallback_trd_market,
73 code,
74 );
75 }
76 let bare_code = strip_market_prefix(code);
80 let derived = derive_sec_market(0, fallback_trd_market, &bare_code);
81 (derived != 0).then_some(derived)
82}
83
84pub fn response_order_currency_for_trade_read(
85 trd_env: i32,
86 cached_currency: Option<i32>,
87 _cached_trd_market: Option<i32>,
88 fallback_trd_market: i32,
89) -> Option<i32> {
90 if trd_env == 0 {
91 return crate::currency::trade_read_currency_for_market(
92 (fallback_trd_market != 0).then_some(fallback_trd_market),
93 );
94 }
95 cached_currency
96}
97
98pub fn response_order_fill_sec_market_for_trade_read(
99 trd_market: Option<i32>,
100 code: &str,
101) -> Option<i32> {
102 response_sec_market_for_trade_read(None, trd_market, trd_market.unwrap_or_default(), code)
108}
109
110pub fn response_position_pl_ratio_for_trade_read(
119 raw_ratio: Option<f64>,
120 _price: f64,
121 _cost_price: f64,
122 _position_side: i32,
123) -> Option<f64> {
124 raw_ratio
125}
126
127#[cfg(test)]
128mod tests;