finance_query/models/filings/
filing_index.rs1use serde::{Deserialize, Deserializer, Serialize};
7
8fn deserialize_size<'de, D>(deserializer: D) -> Result<Option<u64>, D::Error>
11where
12 D: Deserializer<'de>,
13{
14 let s = String::deserialize(deserializer)?;
15 Ok(s.parse().ok())
16}
17
18#[derive(Debug, Clone, Serialize, Deserialize)]
20#[non_exhaustive]
21pub struct EdgarFilingIndex {
22 #[serde(default)]
24 pub directory: EdgarFilingIndexDirectory,
25}
26
27#[derive(Debug, Clone, Serialize, Deserialize, Default)]
29#[non_exhaustive]
30pub struct EdgarFilingIndexDirectory {
31 #[serde(default)]
33 pub item: Vec<EdgarFilingIndexItem>,
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
38#[non_exhaustive]
39pub struct EdgarFilingIndexItem {
40 pub name: String,
42
43 #[serde(default, rename = "type")]
46 pub item_type: String,
47
48 #[serde(default, deserialize_with = "deserialize_size")]
51 pub size: Option<u64>,
52}