finance_query/models/corporate/
summary_profile.rs1use serde::{Deserialize, Serialize};
5use serde_json::Value;
6
7#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
11#[serde(rename_all = "camelCase")]
12#[non_exhaustive]
13pub struct SummaryProfile {
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub address1: Option<String>,
17
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub city: Option<String>,
21
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub company_officers: Option<Vec<Value>>,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub country: Option<String>,
29
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub executive_team: Option<Vec<Value>>,
33
34 #[serde(skip_serializing_if = "Option::is_none")]
36 pub full_time_employees: Option<i64>,
37
38 #[serde(skip_serializing_if = "Option::is_none")]
40 pub industry: Option<String>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub industry_disp: Option<String>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
48 pub industry_key: Option<String>,
49
50 #[serde(skip_serializing_if = "Option::is_none")]
52 pub ir_website: Option<String>,
53
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub long_business_summary: Option<String>,
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 pub max_age: Option<i64>,
61
62 #[serde(skip_serializing_if = "Option::is_none")]
64 pub phone: Option<String>,
65
66 #[serde(skip_serializing_if = "Option::is_none")]
68 pub sector: Option<String>,
69
70 #[serde(skip_serializing_if = "Option::is_none")]
72 pub sector_disp: Option<String>,
73
74 #[serde(skip_serializing_if = "Option::is_none")]
76 pub sector_key: Option<String>,
77
78 #[serde(skip_serializing_if = "Option::is_none")]
80 pub state: Option<String>,
81
82 #[serde(skip_serializing_if = "Option::is_none")]
84 pub website: Option<String>,
85
86 #[serde(skip_serializing_if = "Option::is_none")]
88 pub zip: Option<String>,
89}
90
91#[cfg(test)]
92mod tests {
93 use super::*;
94
95 #[test]
96 fn test_deserialize_summary_profile() {
97 let json = r#"{
98 "address1": "One Apple Park Way",
99 "city": "Cupertino",
100 "companyOfficers": [],
101 "country": "United States",
102 "fullTimeEmployees": 166000,
103 "industry": "Consumer Electronics",
104 "industryDisp": "Consumer Electronics",
105 "industryKey": "consumer-electronics",
106 "phone": "(408) 996-1010",
107 "sector": "Technology",
108 "sectorDisp": "Technology",
109 "sectorKey": "technology",
110 "state": "CA",
111 "website": "https://www.apple.com",
112 "zip": "95014"
113 }"#;
114
115 let profile: SummaryProfile = serde_json::from_str(json).unwrap();
116 assert_eq!(profile.city.as_deref(), Some("Cupertino"));
117 assert_eq!(profile.sector_disp.as_deref(), Some("Technology"));
118 assert_eq!(profile.full_time_employees, Some(166000));
119 }
120}