jsonresume_renderer/
lib.rs

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}