use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SecurityMapping {
pub figi: String,
pub ticker: Option<String>,
pub name: Option<String>,
pub exchange_code: Option<String>,
pub composite_figi: Option<String>,
pub share_class_figi: Option<String>,
pub security_type: Option<String>,
pub market_sector: Option<String>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[non_exhaustive]
pub enum SecurityIdKind {
Cusip,
Isin,
Sedol,
Figi,
Ticker,
}
impl SecurityIdKind {
pub fn as_str(self) -> &'static str {
match self {
Self::Cusip => "ID_CUSIP",
Self::Isin => "ID_ISIN",
Self::Sedol => "ID_SEDOL",
Self::Figi => "ID_BB_GLOBAL",
Self::Ticker => "TICKER",
}
}
}
impl std::fmt::Display for SecurityIdKind {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.write_str(self.as_str())
}
}