working api calls
This commit is contained in:
@@ -210,18 +210,28 @@ pub async fn update_available_exchange(
|
||||
}
|
||||
|
||||
/// Add a newly discovered exchange before fetching
|
||||
///
|
||||
/// # Arguments
|
||||
/// * `isin` - The ISIN associated with the exchange.
|
||||
/// * `figi_info` - The FigiInfo containing ticker, mic_code, and currency.
|
||||
///
|
||||
/// # Returns
|
||||
/// Ok(()) on success.
|
||||
///
|
||||
/// # Errors
|
||||
/// Returns an error if loading or saving available exchanges fails.
|
||||
pub async fn add_discovered_exchange(
|
||||
isin: &str,
|
||||
ticker_info: &TickerInfo,
|
||||
figi_info: &FigiInfo,
|
||||
) -> anyhow::Result<()> {
|
||||
let mut exchanges = load_available_exchanges(isin).await?;
|
||||
|
||||
// Only add if not already present
|
||||
if !exchanges.iter().any(|e| e.ticker == ticker_info.ticker) {
|
||||
if !exchanges.iter().any(|e| e.ticker == figi_info.ticker && e.exchange_mic == figi_info.mic_code) {
|
||||
let new_entry = AvailableExchange::new(
|
||||
ticker_info.ticker.clone(),
|
||||
ticker_info.exchange_mic.clone(),
|
||||
ticker_info.currency.clone(),
|
||||
figi_info.ticker.clone(),
|
||||
figi_info.mic_code.clone(),
|
||||
figi_info.currency.clone(),
|
||||
);
|
||||
exchanges.push(new_entry);
|
||||
save_available_exchanges(isin, exchanges).await?;
|
||||
|
||||
Reference in New Issue
Block a user