smarty_rust_sdk/us_enrichment_api/
geo.rs1use serde::Deserialize;
2use serde::Serialize;
3use std::fmt::Debug;
4use std::ops::Deref;
5use std::ops::DerefMut;
6
7use super::response::EnrichmentResponse;
8
9#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
10#[serde(default)]
11pub struct GeoReferenceResponse {
12 pub smarty_key: String,
13 pub data_set_name: String,
14 pub data_set_version: String,
15 pub attributes: GeoReferenceAttributes,
16}
17
18impl EnrichmentResponse for GeoReferenceResponse {
19 fn lookup_type() -> &'static str {
20 "geo-reference"
21 }
22}
23
24#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
25#[serde(default)]
26pub struct GeoReference2010Response(pub GeoReferenceResponse);
27
28impl Deref for GeoReference2010Response {
29 type Target = GeoReferenceResponse;
30 fn deref(&self) -> &Self::Target {
31 &self.0
32 }
33}
34
35impl DerefMut for GeoReference2010Response {
36 fn deref_mut(&mut self) -> &mut Self::Target {
37 &mut self.0
38 }
39}
40
41impl EnrichmentResponse for GeoReference2010Response {
42 fn lookup_type() -> &'static str {
43 "geo-reference/2010"
44 }
45}
46
47#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
48#[serde(default)]
49pub struct GeoReference2020Response(pub GeoReferenceResponse);
50
51impl Deref for GeoReference2020Response {
52 type Target = GeoReferenceResponse;
53 fn deref(&self) -> &Self::Target {
54 &self.0
55 }
56}
57
58impl DerefMut for GeoReference2020Response {
59 fn deref_mut(&mut self) -> &mut Self::Target {
60 &mut self.0
61 }
62}
63
64impl EnrichmentResponse for GeoReference2020Response {
65 fn lookup_type() -> &'static str {
66 "geo-reference/2020"
67 }
68}
69
70#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
71#[serde(default)]
72pub struct GeoReferenceAttributes {
73 pub census_block: CensusBlock,
74 pub census_county_division: CensusCountyDivision,
75 pub census_tract: CensusTract,
76 pub core_based_stat_area: CoreBasedStatArea,
77 pub place: Place,
78}
79
80#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
81#[serde(default)]
82pub struct CensusBlock {
83 pub accuracy: String,
84 pub geoid: String,
85}
86
87#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
88#[serde(default)]
89pub struct CensusCountyDivision {
90 pub accuracy: String,
91 pub code: String,
92 pub name: String,
93}
94
95#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
96#[serde(default)]
97pub struct CensusTract {
98 pub code: String,
99}
100
101#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
102#[serde(default)]
103pub struct CoreBasedStatArea {
104 pub code: String,
105 pub name: String,
106}
107
108#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
109#[serde(default)]
110pub struct Place {
111 pub accuracy: String,
112 pub code: String,
113 pub name: String,
114 #[serde(rename = "type")]
115 pub place_type: String,
116}