diff --git a/src/strategy_team/strategy_manager.rs b/src/strategy_team/strategy_manager.rs index d6e71fe..9bdb5c6 100644 --- a/src/strategy_team/strategy_manager.rs +++ b/src/strategy_team/strategy_manager.rs @@ -89,17 +89,7 @@ pub async fn insert_pre_suggested_coins( is_long: bool, filtered_coins: &HashMap ) -> Result<(), Box> { - // Check the existance of record that is registered by this strategist - let mut dest_table_name = String::from("suggested_coin_list"); - let mut dest2_table_name = String::from("buy_ordered_coin_list"); - let mut dest3_table_name = String::from("pre_suggested_coin_list"); let mut insert_table_name = String::from("pre_suggested_coin_list"); - let mut exists_condition_build = String::from("registerer="); - exists_condition_build.push_str(registerer.to_string().as_str()); - let mut exists_condition = Some(exists_condition_build); - let exists_result1 = exists_record(&dest_table_name, &exists_condition).await; - let exists_result2 = exists_record(&dest2_table_name, &exists_condition).await; - let exists_result3 = exists_record(&dest3_table_name, &exists_condition).await; let insert_columns = vec![ "symbol", "close_time", @@ -115,549 +105,8 @@ pub async fn insert_pre_suggested_coins( "is_long", ]; - if exists_result1 == true && exists_result2 == true && exists_result3 == true { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - #[derive(FromRow)] - struct SelectData2 { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let mut select_columns2 = String::from("symbol, close_time"); - let select_data_structure2 = SelectData2 { - symbol: String::new(), - close_time: 0, - }; - let suggested_coin_list = try_select_record( - &dest_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - let ordered_coin_list = try_select_record( - &dest2_table_name, - &select_columns2, - &select_condition, - &select_data_structure2, - ) - .await?; - let pre_suggested_coin_list = try_select_record( - &dest3_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - - // insert record without duplicate(registerer, closetime, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - for list_element in &ordered_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - for list_element in &pre_suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else if exists_result1 == true && exists_result2 == true && exists_result3 == false { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - #[derive(FromRow)] - struct SelectData2 { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let mut select_columns2 = String::from("symbol, close_time"); - let select_data_structure2 = SelectData2 { - symbol: String::new(), - close_time: 0, - }; - let suggested_coin_list = try_select_record( - &dest_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - let ordered_coin_list = try_select_record( - &dest2_table_name, - &select_columns2, - &select_condition, - &select_data_structure2, - ) - .await?; - - // insert record without duplicate(registerer, closetime, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - for list_element in &ordered_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else if exists_result1 == true && exists_result2 == false && exists_result3 == true { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let suggested_coin_list = try_select_record( - &dest_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - let pre_suggested_coin_list = try_select_record( - &dest3_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - - // insert record without duplicate(registerer, closetime, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - for list_element in &pre_suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else if exists_result1 == true && exists_result2 == false && exists_result3 == false { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let suggested_coin_list = try_select_record( - &dest_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - - // insert record without duplicate(registerer, closetime, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else if exists_result1 == false && exists_result2 == true && exists_result3 == true { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - #[derive(FromRow)] - struct SelectData2 { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let mut select_columns2 = String::from("symbol, close_time"); - let select_data_structure2 = SelectData2 { - symbol: String::new(), - close_time: 0, - }; - let ordered_coin_list = try_select_record( - &dest2_table_name, - &select_columns2, - &select_condition, - &select_data_structure2, - ) - .await?; - let pre_suggested_coin_list = try_select_record( - &dest3_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - - // insert record without duplicate(registerer, close_time, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &ordered_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - for list_element in &pre_suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else if exists_result1 == false && exists_result2 == true && exists_result3 == false { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - #[derive(FromRow)] - struct SelectData2 { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let mut select_columns2 = String::from("symbol, close_time"); - let select_data_structure2 = SelectData2 { - symbol: String::new(), - close_time: 0, - }; - let ordered_coin_list = try_select_record( - &dest2_table_name, - &select_columns2, - &select_condition, - &select_data_structure2, - ) - .await?; - - // insert record without duplicate(registerer, closetime, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &ordered_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else if exists_result1 == false && exists_result2 == false && exists_result3 == true { - // Bring the current list of pre-suggested coins from [pre_suggested_coin_list] and [ordered_coin_list] - #[derive(FromRow)] - struct SelectData { - symbol: String, - close_time: i64, - } - let mut select_columns = String::from("symbol, close_time"); - let mut condition_build = String::from("WHERE registerer="); - condition_build.push_str(registerer.to_string().as_str()); - let select_condition = Some(condition_build); - let select_data_structure = SelectData { - symbol: String::new(), - close_time: 0, - }; - let pre_suggested_coin_list = try_select_record( - &dest3_table_name, - &select_columns, - &select_condition, - &select_data_structure, - ) - .await?; - - // insert record without duplicate(registerer, closetime, symbol) into [pre_suggested_coin_list] - for (symbol, filtered_data) in filtered_coins { - let mut is_dupe = false; // initialize - - for list_element in &pre_suggested_coin_list { - if (*symbol == list_element.symbol) - && (filtered_data.closetime == list_element.close_time) - { - is_dupe = true; - break; - } - } - - if is_dupe == false { - let mut insert_values = vec![ - symbol.clone(), // symbol - filtered_data.closetime.to_string(), // close_time - filtered_data.current_price.to_string(), // suggested_price - filtered_data.current_price.to_string(), // current_price - filtered_data.stoploss.to_string(), // stoploss - filtered_data.target_price.to_string(), // target_price - get_server_epoch().await.to_string(), // registered_server_epoch - 0.0.to_string(), // profit_percent - 0.0.to_string(), // minimum_profit_percent - 0.0.to_string(), // maximum_profit_percent - registerer.to_string(), // registerer - ]; - - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; - } - } - } else { - for (symbol, filtered_data) in filtered_coins { - let mut insert_values = vec![ + for (symbol, filtered_data) in filtered_coins { + let mut insert_values = vec![ symbol.clone(), // symbol filtered_data.closetime.to_string(), // close_time filtered_data.current_price.to_string(), // suggested_price @@ -671,14 +120,13 @@ pub async fn insert_pre_suggested_coins( registerer.to_string(), // registerer ]; - if is_long == true { - insert_values.push(1.to_string()); // is_long - } else { - insert_values.push(0.to_string()); // is_long - } - - insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; + if is_long == true { + insert_values.push(1.to_string()); // is_long + } else { + insert_values.push(0.to_string()); // is_long } + + insert_one_record(&insert_table_name, &insert_columns, &insert_values).await; } Ok(())