use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default)]
#[non_exhaustive]
pub struct FilingSearchFilters {
pub forms: Option<Vec<String>>,
pub start_date: Option<String>,
pub end_date: Option<String>,
pub cik: Option<String>,
pub limit: Option<u32>,
}
impl FilingSearchFilters {
pub fn forms<S: Into<String>, I: IntoIterator<Item = S>>(mut self, forms: I) -> Self {
self.forms = Some(forms.into_iter().map(Into::into).collect());
self
}
pub fn from(mut self, date: impl Into<String>) -> Self {
self.start_date = Some(date.into());
self
}
pub fn to(mut self, date: impl Into<String>) -> Self {
self.end_date = Some(date.into());
self
}
pub fn cik(mut self, cik: impl Into<String>) -> Self {
self.cik = Some(cik.into());
self
}
pub fn limit(mut self, limit: u32) -> Self {
self.limit = Some(limit);
self
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct FilingSearchHit {
pub accession_number: Option<String>,
pub form: Option<String>,
pub filed_date: Option<String>,
pub period_ending: Option<String>,
pub company_names: Vec<String>,
pub ciks: Vec<String>,
pub score: Option<f64>,
pub url: Option<String>,
}