1use crate::market::{derive_sec_market, strip_market_prefix};
9
10pub fn response_sec_market_for_trade_read(
11 cached_sec_market: Option<i32>,
12 trd_market: Option<i32>,
13 fallback_trd_market: i32,
14 code: &str,
15) -> Option<i32> {
16 if let Some(sec_market) = cached_sec_market.filter(|v| *v != 0) {
17 return Some(sec_market);
18 }
19 let derived = derive_sec_market(0, trd_market.unwrap_or(fallback_trd_market), code);
20 (derived != 0).then_some(derived)
21}
22
23pub fn response_currency_for_trade_read(
24 cached_currency: Option<i32>,
25 trd_market: Option<i32>,
26) -> Option<i32> {
27 if let Some(currency) = cached_currency.filter(|v| *v != 0) {
28 return Some(currency);
29 }
30 crate::currency::trade_read_currency_for_market(trd_market)
31}
32
33pub fn response_trd_market_for_trade_read(
34 cached_trd_market: Option<i32>,
35 fallback_trd_market: i32,
36) -> Option<i32> {
37 cached_trd_market.or_else(|| (fallback_trd_market != 0).then_some(fallback_trd_market))
38}
39
40pub fn response_order_trd_market_for_trade_read(
41 trd_env: i32,
42 cached_trd_market: Option<i32>,
43 fallback_trd_market: i32,
44) -> Option<i32> {
45 if trd_env == 0 {
50 return (fallback_trd_market != 0).then_some(fallback_trd_market);
51 }
52 response_trd_market_for_trade_read(cached_trd_market, fallback_trd_market)
53}
54
55pub fn response_order_sec_market_for_trade_read(
56 trd_env: i32,
57 cached_sec_market: Option<i32>,
58 cached_trd_market: Option<i32>,
59 fallback_trd_market: i32,
60 code: &str,
61) -> Option<i32> {
62 if trd_env != 0 {
63 return response_sec_market_for_trade_read(
64 cached_sec_market,
65 cached_trd_market,
66 fallback_trd_market,
67 code,
68 );
69 }
70 let bare_code = strip_market_prefix(code);
74 let derived = derive_sec_market(0, fallback_trd_market, &bare_code);
75 (derived != 0).then_some(derived)
76}
77
78pub fn response_order_currency_for_trade_read(
79 trd_env: i32,
80 cached_currency: Option<i32>,
81 cached_trd_market: Option<i32>,
82 fallback_trd_market: i32,
83) -> Option<i32> {
84 if trd_env == 0 {
85 return crate::currency::trade_read_currency_for_market(
86 (fallback_trd_market != 0).then_some(fallback_trd_market),
87 );
88 }
89 response_currency_for_trade_read(
90 cached_currency,
91 response_trd_market_for_trade_read(cached_trd_market, fallback_trd_market),
92 )
93}
94
95pub fn response_order_fill_sec_market_for_trade_read(
96 trd_market: Option<i32>,
97 code: &str,
98) -> Option<i32> {
99 response_sec_market_for_trade_read(None, trd_market, trd_market.unwrap_or_default(), code)
105}
106
107pub fn response_position_pl_ratio_for_trade_read(
116 raw_ratio: Option<f64>,
117 _price: f64,
118 _cost_price: f64,
119 _position_side: i32,
120) -> Option<f64> {
121 raw_ratio
122}
123
124#[cfg(test)]
125mod tests;