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_currency_for_trade_read(
40 cached_currency: Option<i32>,
41 trd_market: Option<i32>,
42) -> Option<i32> {
43 if let Some(currency) = cached_currency.filter(|v| *v != 0) {
44 return Some(currency);
45 }
46 crate::currency::trade_read_currency_for_market(trd_market)
47}
48
49pub fn response_trd_market_for_trade_read(
50 cached_trd_market: Option<i32>,
51 fallback_trd_market: i32,
52) -> Option<i32> {
53 cached_trd_market.or_else(|| (fallback_trd_market != 0).then_some(fallback_trd_market))
54}
55
56pub fn response_order_trd_market_for_trade_read(
57 trd_env: i32,
58 cached_trd_market: Option<i32>,
59 fallback_trd_market: i32,
60) -> Option<i32> {
61 if trd_env == 0 {
66 return (fallback_trd_market != 0).then_some(fallback_trd_market);
67 }
68 response_trd_market_for_trade_read(cached_trd_market, fallback_trd_market)
69}
70
71pub fn response_order_sec_market_for_trade_read(
72 trd_env: i32,
73 cached_sec_market: Option<i32>,
74 cached_trd_market: Option<i32>,
75 fallback_trd_market: i32,
76 code: &str,
77) -> Option<i32> {
78 if trd_env != 0 {
79 return response_sec_market_for_trade_read(
80 cached_sec_market,
81 cached_trd_market,
82 fallback_trd_market,
83 code,
84 );
85 }
86 let bare_code = strip_market_prefix(code);
90 let derived = derive_sec_market(0, fallback_trd_market, &bare_code);
91 (derived != 0).then_some(derived)
92}
93
94pub fn response_order_currency_for_trade_read(
95 trd_env: i32,
96 cached_currency: Option<i32>,
97 cached_trd_market: Option<i32>,
98 fallback_trd_market: i32,
99) -> Option<i32> {
100 if trd_env == 0 {
101 return crate::currency::trade_read_currency_for_market(
102 (fallback_trd_market != 0).then_some(fallback_trd_market),
103 );
104 }
105 response_currency_for_trade_read(
106 cached_currency,
107 response_trd_market_for_trade_read(cached_trd_market, fallback_trd_market),
108 )
109}
110
111pub fn response_order_fill_sec_market_for_trade_read(
112 trd_market: Option<i32>,
113 code: &str,
114) -> Option<i32> {
115 response_sec_market_for_trade_read(None, trd_market, trd_market.unwrap_or_default(), code)
121}
122
123pub fn response_position_pl_ratio_for_trade_read(
132 raw_ratio: Option<f64>,
133 _price: f64,
134 _cost_price: f64,
135 _position_side: i32,
136) -> Option<f64> {
137 raw_ratio
138}
139
140#[cfg(test)]
141mod tests;