Skip to content

Commit 015c6aa

Browse files
committed
add validation
1 parent 897c839 commit 015c6aa

File tree

15 files changed

+897
-11
lines changed

15 files changed

+897
-11
lines changed

Cargo.lock

Lines changed: 526 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,8 @@ version = "0.1.0"
44
edition = "2024"
55

66
[dependencies]
7+
email_address = "0.2.9"
8+
regex = "1.11.1"
79
serde = { version = "1.0.219", features = ["derive"] }
10+
serde_valid = "1.0.5"
11+
url = "2.5.4"

src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
mod resume;
2+
mod validation;

src/resume.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
use serde::{Deserialize, Serialize};
2+
use serde_valid::Validate;
23

34
mod award;
45
mod basics;
@@ -26,7 +27,7 @@ use skill::Skill;
2627
use volunteer::Volunteer;
2728
use work::Work;
2829

29-
#[derive(Debug, Serialize, Deserialize)]
30+
#[derive(Debug, Serialize, Deserialize, Validate)]
3031
pub struct Resume {
3132
pub basics: Basics,
3233
pub work: Vec<Work>,

src/resume/award.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
use crate::validation::validate_date;
12
use serde::{Deserialize, Serialize};
3+
use serde_valid::Validate;
24

3-
#[derive(Debug, Serialize, Deserialize)]
5+
#[derive(Debug, Serialize, Deserialize, Validate)]
46
pub struct Award {
57
pub title: Option<String>,
8+
#[validate(custom = validate_date)]
69
pub date: Option<String>,
710
pub awarder: Option<String>,
811
pub summary: Option<String>,

src/resume/basics.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1+
use crate::validation::{validate_email, validate_url};
12
use serde::{Deserialize, Serialize};
3+
use serde_valid::Validate;
24

35
mod location;
46
mod profile;
57

68
use location::Location;
79
use profile::Profile;
810

9-
#[derive(Debug, Serialize, Deserialize)]
11+
#[derive(Debug, Serialize, Deserialize, Validate)]
1012
pub struct Basics {
1113
pub name: Option<String>,
1214
pub label: Option<String>,
15+
#[validate(custom = validate_url)]
1316
pub image: Option<String>,
17+
#[validate(custom = validate_email)]
1418
pub email: Option<String>,
1519
pub phone: Option<String>,
20+
#[validate(custom = validate_url)]
1621
pub url: Option<String>,
1722
pub summary: Option<String>,
1823
pub location: Option<Location>,

src/resume/basics/location.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1+
use crate::validation::validate_country_code;
12
use serde::{Deserialize, Serialize};
3+
use serde_valid::Validate;
24

3-
#[derive(Debug, Serialize, Deserialize)]
5+
#[derive(Debug, Serialize, Deserialize, Validate)]
46
pub struct Location {
57
pub address: Option<String>,
68
#[serde(rename = "postalCode")]
79
pub postal_code: Option<String>,
810
pub city: Option<String>,
911
#[serde(rename = "countryCode")]
12+
#[validate(custom = validate_country_code)]
1013
pub country_code: Option<String>,
1114
pub region: Option<String>,
1215
}

src/resume/basics/profile.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
use crate::validation::validate_url;
12
use serde::{Deserialize, Serialize};
3+
use serde_valid::Validate;
24

3-
#[derive(Debug, Serialize, Deserialize)]
5+
#[derive(Debug, Serialize, Deserialize, Validate)]
46
pub struct Profile {
57
pub network: Option<String>,
68
pub username: Option<String>,
9+
#[validate(custom = validate_url)]
710
pub url: Option<String>,
811
}

src/resume/certificate.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1+
use crate::validation::{validate_date, validate_url};
12
use serde::{Deserialize, Serialize};
3+
use serde_valid::Validate;
24

3-
#[derive(Debug, Serialize, Deserialize)]
5+
#[derive(Debug, Serialize, Deserialize, Validate)]
46
pub struct Certificate {
57
pub name: Option<String>,
8+
#[validate(custom = validate_date)]
69
pub date: Option<String>,
710
pub issuer: Option<String>,
11+
#[validate(custom = validate_url)]
812
pub url: Option<String>,
913
}

src/resume/education.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
1+
use crate::validation::{validate_date, validate_url};
12
use serde::{Deserialize, Serialize};
3+
use serde_valid::Validate;
24

3-
#[derive(Debug, Serialize, Deserialize)]
5+
#[derive(Debug, Serialize, Deserialize, Validate)]
46
pub struct Education {
57
pub institution: Option<String>,
8+
#[validate(custom = validate_url)]
69
pub url: Option<String>,
710
pub area: Option<String>,
811
#[serde(rename = "studyType")]
912
pub study_type: Option<String>,
1013
#[serde(rename = "startDate")]
14+
#[validate(custom = validate_date)]
1115
pub start_date: Option<String>,
1216
#[serde(rename = "endDate")]
17+
#[validate(custom = validate_date)]
1318
pub end_date: Option<String>,
1419
pub score: Option<String>,
1520
pub courses: Option<Vec<String>>,

0 commit comments

Comments
 (0)