From 2fe06a9d889ee09b8ea8775bc4ffd35cd2875f3c Mon Sep 17 00:00:00 2001 From: donpat1to Date: Wed, 26 Nov 2025 00:34:23 +0100 Subject: [PATCH] changed types might remove ticker info bc replaced by figi --- src/corporate/openfigi.rs | 71 +-------------------------------------- src/corporate/types.rs | 3 +- 2 files changed, 2 insertions(+), 72 deletions(-) diff --git a/src/corporate/openfigi.rs b/src/corporate/openfigi.rs index 29d93d3..10f2047 100644 --- a/src/corporate/openfigi.rs +++ b/src/corporate/openfigi.rs @@ -155,42 +155,6 @@ pub async fn build_figi_to_lei_map(lei_to_isins: &HashMap>) Ok(figi_to_lei) } -/// Seed companies from hardcoded list (replaces get_tickers() + companies.json) -fn get_seed_companies() -> Vec { - vec![ - CompanyMetadata { - lei: "549300JB8Z3P7D2X0Y43".to_string(), // JPMorgan (real LEI) - figi: None, - name: "JPMorgan Chase & Co.".to_string(), - isins: vec!["US46625H1005".to_string()], - primary_isin: "US46625H1005".to_string(), - tickers: vec![TickerInfo { - ticker: "JPM".to_string(), - exchange_mic: "XNYS".to_string(), - currency: "USD".to_string(), - primary: true, - }], - }, - CompanyMetadata { - lei: "549300MSFTN5VD1V2U95".to_string(), // Microsoft (real LEI) - figi: None, - name: "Microsoft Corporation".to_string(), - isins: vec!["US5949181045".to_string()], - primary_isin: "US5949181045".to_string(), - tickers: vec![TickerInfo { - ticker: "MSFT".to_string(), - exchange_mic: "XNAS".to_string(), - currency: "USD".to_string(), - primary: true, - }], - }, - // Add the other 14 from your original companies.json here... - // e.g., Industrial and Commercial Bank: lei="...", isins=["CNE000001P37"], tickers=[...] - // Toyota: lei="...", etc. - // Total: 16 seed companies - ] -} - /// Load/build companies using FIGI as key (enriched with LEI via map) pub async fn load_or_build_companies_figi( lei_to_isins: &HashMap>, @@ -200,42 +164,9 @@ pub async fn load_or_build_companies_figi( tokio::fs::create_dir_all(data_dir).await?; let mut companies = Vec::new(); - let seed_companies = get_seed_companies(); - for mut seed in seed_companies { - // Enrich seed with all ISINs from LEI - if let Some(all_isins) = lei_to_isins.get(&seed.lei) { - let mut isins_set: HashSet = seed.isins.iter().cloned().collect(); - isins_set.extend(all_isins.iter().cloned()); - seed.isins = isins_set.into_iter().collect(); - } - // Find primary FIGI (from primary ISIN or first equity FIGI) - let primary_figi = if let Some(primary_isin) = seed.isins.first() { - // Quick lookup or map via OpenFIGI if needed (stub—expand if no figi_to_lei hit) - figi_to_lei - .values() - .find(|lei| lei.as_str() == seed.lei.as_str()) - .cloned() - .unwrap_or_else(|| format!("FIGI{:019}", rand::random::())) - } else { - format!("FIGI{:019}", rand::random::()) - }; - let company = CompanyMetadata { - lei: seed.lei.clone(), - figi: Some(primary_figi.clone()), - name: seed.name.clone(), - isins: seed.isins.clone(), - primary_isin: seed.primary_isin.clone(), - tickers: seed.tickers.clone(), - }; - - let company_path = data_dir.join(format!("{}.json", primary_figi)); - tokio::fs::write(&company_path, serde_json::to_string_pretty(&company)?).await?; - companies.push(company); - } - - println!("Built {} FIGI-keyed companies from seed", companies.len()); + println!("Built {} FIGI-keyed companies.", companies.len()); Ok(companies) } \ No newline at end of file diff --git a/src/corporate/types.rs b/src/corporate/types.rs index b950fe6..a6bd565 100644 --- a/src/corporate/types.rs +++ b/src/corporate/types.rs @@ -44,7 +44,7 @@ pub struct TickerInfo { pub ticker: String, pub exchange_mic: String, pub currency: String, - pub primary: bool, + pub isin: String, // ISIN belonging to this legal entity (primary + ADR + GDR) } #[derive(Debug, Clone, Serialize, Deserialize)] @@ -52,7 +52,6 @@ pub struct CompanyMetadata { pub lei: String, pub figi: Option, pub name: String, - pub isins: Vec, // All ISINs belonging to this legal entity (primary + ADR + GDR) pub primary_isin: String, // The most liquid / preferred one (used for folder fallback) pub tickers: Vec, }