use super::helpers::*;
use super::types::*;
use crate::client::AkShareClient;
use crate::error::Result;
impl AkShareClient {
async fn register_fetch(&self, board: &str) -> Result<Vec<RegisterEntry>> {
let filter = match board {
"全部" => "",
"科创板" => "(MARKET=\"科创板\")",
"创业板" => "(MARKET=\"创业板\")",
"北交所" => "(MARKET=\"北交所\")",
"沪市主板" => "(MARKET=\"沪市主板\")",
"深市主板" => "(MARKET=\"深市主板\")",
_ => "",
};
let data = self
.dc_fetch_all(
"RPT_REGISTERED_VIEW",
"SECURITY_CODE,SECURITY_NAME_ABBR,INDUSTRY,LISTING_DATE,ISSUE_PRICE,PE_RATIO",
filter,
"LISTING_DATE",
"-1",
500,
10,
&[],
)
.await?;
Ok(data
.iter()
.map(|v| RegisterEntry {
code: json_str(v, "SECURITY_CODE"),
name: json_str(v, "SECURITY_NAME_ABBR"),
industry: json_str_opt(v, "INDUSTRY"),
list_date: json_str_opt(v, "LISTING_DATE"),
issue_price: json_f64_opt(v, "ISSUE_PRICE"),
pe_ratio: json_f64_opt(v, "PE_RATIO"),
extra: None,
})
.collect())
}
pub async fn stock_register_all_em(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("全部").await
}
pub async fn stock_register_bj(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("北交所").await
}
pub async fn stock_register_cyb(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("创业板").await
}
pub async fn stock_register_db(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("全部").await
}
pub async fn stock_register_kcb(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("科创板").await
}
pub async fn stock_register_sh(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("沪市主板").await
}
pub async fn stock_register_sz(&self) -> Result<Vec<RegisterEntry>> {
self.register_fetch("深市主板").await
}
}