From b88f7799260a8a31d18169fa2de92d847342c979 Mon Sep 17 00:00:00 2001 From: Sik Yoon Date: Sat, 12 Aug 2023 18:52:52 +0900 Subject: [PATCH] Refactor buy_coin() --- src/coex/exchange_team.rs | 57 +++++++-------------------------------- 1 file changed, 9 insertions(+), 48 deletions(-) diff --git a/src/coex/exchange_team.rs b/src/coex/exchange_team.rs index 428ee4d..347a004 100644 --- a/src/coex/exchange_team.rs +++ b/src/coex/exchange_team.rs @@ -114,42 +114,30 @@ pub struct MarketCapIndex { // buy coin pub async fn buy_coin( client: &Client, - coin_price_vec: &Vec, exchange_info_vec: &Vec, trade_fee_vec: &Vec, ) -> Result<(), Box> { // check conditions for buying - set_is_tradable().await; - let mut is_tradable = get_is_tradable().await; let mut suggested_coin = get_suggested_coin_list().await; let mut delete_condition = String::from("WHERE "); let mut is_exist_delete_symbol: bool = false; - if is_tradable == true && !suggested_coin.is_empty() { + if !suggested_coin.is_empty() { // && (signal_decision.first().unwrap().decision == "KEEP" || signal_decision.first().unwrap().decision == "UP") { let unit_trade_usdt = fetch_unit_trade_usdt().await; - let server_epoch = server_epoch().await; let mut filtered_suggested_coin_vec: Vec<&SuggestedCoin> = Vec::new(); // filtering symbols to buy - suggested_coin.reverse(); for element in &suggested_coin { - let price_index = coin_price_vec - .iter() - .position(|x| *x.symbol == element.symbol); - if price_index.is_some() - && element.already_buy == 0 + if element.already_buy == 0 && server_epoch - element.registered_server_epoch <= 600_000 // 600_000 (600 secs = 10 mins) { filtered_suggested_coin_vec.push(element); - delete_condition.push_str("id = "); - delete_condition.push_str(element.id.to_string().as_str()); - delete_condition.push_str(" OR "); is_exist_delete_symbol = false; - } else if server_epoch - element.registered_server_epoch >= 1_800_000 { + } else if server_epoch - element.registered_server_epoch > 600_000 { delete_condition.push_str("id = "); delete_condition.push_str(element.id.to_string().as_str()); delete_condition.push_str(" OR "); @@ -157,7 +145,10 @@ pub async fn buy_coin( } } - if !filtered_suggested_coin_vec.is_empty() { + set_is_tradable().await; + let mut is_tradable = get_is_tradable().await; + + if is_tradable == true && !filtered_suggested_coin_vec.is_empty() { let available_usdt = get_available_usdt().await; let vec_len = Decimal::new(filtered_suggested_coin_vec.len() as i64, 0); let mut used_usdt = Decimal::new(0, 8); @@ -253,37 +244,6 @@ pub async fn buy_coin( } } } - // delete the coin record in [suggested_coin_list] - if is_exist_delete_symbol == true { - delete_condition.pop(); - delete_condition.pop(); - delete_condition.pop(); - delete_condition.pop(); - delete_condition.push(';'); - let suggested_coin_list_table_name = String::from("suggested_coin_list"); - delete_record(&suggested_coin_list_table_name, &delete_condition) - .await - .unwrap(); - } - } else { - let server_epoch = server_epoch().await; - let mut filtered_suggested_coin_vec: Vec<&SuggestedCoin> = Vec::new(); - - // filtering symbols to buy - for element in &suggested_coin { - if ((element.registerer != 5 || element.registerer != 6) - && server_epoch - element.registered_server_epoch > 65_000) - || ((element.registerer == 5 || element.registerer == 6) - && server_epoch - element.registered_server_epoch >= 65_000) - { - // 10000 (10 secs), 600_000 (10 mins), 7_200_000 (120 mins) - filtered_suggested_coin_vec.push(element); - delete_condition.push_str("id = "); - delete_condition.push_str(element.id.to_string().as_str()); - delete_condition.push_str(" OR "); - is_exist_delete_symbol = true; - } - } // delete the coin record in [suggested_coin_list] if is_exist_delete_symbol == true { @@ -297,7 +257,8 @@ pub async fn buy_coin( .await .unwrap(); } - } + } + Ok(()) }