1pub mod schema {
2 use chrono::NaiveDate;
3 use serde::{Deserialize, Serialize};
4
5 #[derive(Debug, Serialize, Deserialize)]
6 #[serde(rename_all = "camelCase")]
7 pub struct JsonResume {
8 basics: Basics,
9 work: Option<Vec<Work>>,
10 volunteer: Option<Vec<Volunteer>>,
11 education: Option<Vec<Education>>,
12 awards: Option<Vec<Award>>,
13 certificates: Option<Vec<Certificate>>,
14 publications: Option<Vec<Publication>>,
15 skills: Option<Vec<Skill>>,
16 languages: Option<Vec<Language>>,
17 interests: Option<Vec<Interest>>,
18 references: Option<Vec<Reference>>,
19 projects: Option<Vec<Project>>,
20 }
21
22 #[derive(Debug, Serialize, Deserialize)]
23 #[serde(rename_all = "camelCase")]
24 struct Basics {
25 name: Option<String>,
26 label: Option<String>,
27 image: Option<String>,
28 email: Option<String>,
29 phone: Option<String>,
30 url: Option<String>,
31 summary: Option<String>,
32 location: Location,
33 profiles: Option<Vec<Profile>>,
34 }
35
36 #[derive(Debug, Serialize, Deserialize)]
37 #[serde(rename_all = "camelCase")]
38 struct Profile {
39 network: Option<String>,
40 username: Option<String>,
41 url: Option<String>,
42 }
43
44 #[derive(Debug, Serialize, Deserialize)]
45 #[serde(rename_all = "camelCase")]
46 struct Location {
47 address: Option<String>,
48 postal_code: Option<String>,
49 city: Option<String>,
50 country_code: Option<String>,
51 region: Option<String>,
52 }
53
54 #[derive(Debug, Serialize, Deserialize)]
55 #[serde(rename_all = "camelCase")]
56 struct Work {
57 name: Option<String>,
58 position: Option<String>,
59 url: Option<String>,
60 start_date: Option<NaiveDate>,
61 end_date: Option<NaiveDate>,
62 summary: Option<String>,
63 highlights: Option<Vec<String>>,
64 }
65
66 #[derive(Debug, Serialize, Deserialize)]
67 #[serde(rename_all = "camelCase")]
68 struct Volunteer {
69 organization: Option<String>,
70 position: Option<String>,
71 url: Option<String>,
72 start_date: Option<NaiveDate>,
73 end_date: Option<NaiveDate>,
74 summary: Option<String>,
75 highlights: Option<Vec<String>>,
76 }
77
78 #[derive(Debug, Serialize, Deserialize)]
79 #[serde(rename_all = "camelCase")]
80 struct Education {
81 institution: Option<String>,
82 url: Option<String>,
83 area: Option<String>,
84 study_type: Option<String>,
85 start_date: Option<NaiveDate>,
86 end_date: Option<NaiveDate>,
87 score: Option<String>,
88 courses: Option<Vec<String>>,
89 }
90
91 #[derive(Debug, Serialize, Deserialize)]
92 #[serde(rename_all = "camelCase")]
93 struct Award {
94 title: Option<String>,
95 date: Option<String>,
96 awarder: Option<String>,
97 summary: Option<String>,
98 }
99
100 #[derive(Debug, Serialize, Deserialize)]
101 #[serde(rename_all = "camelCase")]
102 struct Certificate {
103 name: Option<String>,
104 date: Option<String>,
105 issuer: Option<String>,
106 url: Option<String>,
107 }
108
109 #[derive(Debug, Serialize, Deserialize)]
110 #[serde(rename_all = "camelCase")]
111 struct Publication {
112 name: Option<String>,
113 publisher: Option<String>,
114 release_date: Option<String>,
115 url: Option<String>,
116 summary: Option<String>,
117 }
118
119 #[derive(Debug, Serialize, Deserialize)]
120 #[serde(rename_all = "camelCase")]
121 struct Skill {
122 name: Option<String>,
123 level: Option<String>,
124 keywords: Option<Vec<String>>,
125 }
126
127 #[derive(Debug, Serialize, Deserialize)]
128 #[serde(rename_all = "camelCase")]
129 struct Language {
130 language: Option<String>,
131 fluency: Option<String>,
132 }
133
134 #[derive(Debug, Serialize, Deserialize)]
135 #[serde(rename_all = "camelCase")]
136 struct Interest {
137 name: Option<String>,
138 keywords: Option<Vec<String>>,
139 }
140
141 #[derive(Debug, Serialize, Deserialize)]
142 #[serde(rename_all = "camelCase")]
143 struct Reference {
144 name: Option<String>,
145 reference: Option<String>,
146 }
147
148 #[derive(Debug, Serialize, Deserialize)]
149 #[serde(rename_all = "camelCase")]
150 struct Project {
151 name: Option<String>,
152 description: Option<String>,
153 highlights: Option<Vec<String>>,
154 keywords: Option<Vec<String>>,
155 start_date: Option<NaiveDate>,
156 end_date: Option<NaiveDate>,
157 url: Option<String>,
158 roles: Option<Vec<String>>,
159 entity: Option<String>,
160 #[serde(rename = "type")]
161 kind: Option<String>,
162 }
163}