Skip to content

Commit

Permalink
chore: nest struct definition using nest_struct crate
Browse files Browse the repository at this point in the history
  • Loading branch information
ZibanPirate committed Nov 21, 2024
1 parent c75551d commit 0086083
Show file tree
Hide file tree
Showing 4 changed files with 89 additions and 78 deletions.
28 changes: 28 additions & 0 deletions rust/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions rust/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ serde_derive = ["dep:serde", "dep:serde_json"]
storage = ["serde_derive"]

[dependencies]
nest_struct = "0.5.2"
serde = { version = "1.0.194", features = ["derive"], optional = true }
serde_json = { version = "1.0.110", optional = true }

Expand Down
69 changes: 30 additions & 39 deletions rust/src/static/node/mod.rs
Original file line number Diff line number Diff line change
@@ -1,47 +1,38 @@
use nest_struct::nest_struct;
#[cfg(feature = "serde_derive")]
use serde::Serialize;

#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde_derive", derive(Serialize))]
pub struct NodeName {
pub ar: &'static str,
pub en: &'static str,
pub fr: &'static str,
}

#[derive(Debug, PartialEq)]
#[cfg_attr(
feature = "serde_derive",
derive(Serialize),
serde(tag = "type"),
serde(rename_all = "UPPERCASE")
)]
pub enum NodeType {
University,
Academy,
PrivateSchool,
Institute,
Faculty,
Department,
Specialty { terms: NodeTerms },
Sector { terms: NodeTerms },
}

#[derive(Debug, PartialEq, Clone)]
#[cfg_attr(
feature = "serde_derive",
derive(Serialize),
serde(rename_all = "camelCase")
)]
pub struct NodeTerms {
pub per_year: usize,
pub slots: &'static [i32],
}

#[nest_struct]
#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde_derive", derive(Serialize))]
pub struct Node {
pub name: NodeName,
pub name: nest! {
pub ar: &'static str,
pub en: &'static str,
pub fr: &'static str,
},
#[cfg_attr(feature = "serde_derive", serde(flatten))]
pub r#type: NodeType,
pub r#type: nest! {
#[derive(Debug, PartialEq)]
#[cfg_attr(feature = "serde_derive", derive(Serialize), serde(tag = "type"), serde(rename_all = "UPPERCASE"))]
pub enum NodeType {
University,
Academy,
PrivateSchool,
Institute,
Faculty,
Department,
Specialty {
terms: nest! {
#[derive(Debug, PartialEq, Clone)]
#[cfg_attr(feature = "serde_derive", derive(Serialize), serde(rename_all = "camelCase"))]
pub struct NodeTerms {
pub per_year: usize,
pub slots: &'static [i32],
}
}
},
Sector { terms: NodeTerms },
}
},
}
69 changes: 30 additions & 39 deletions rust/src/storage/node/mod.rs
Original file line number Diff line number Diff line change
@@ -1,48 +1,39 @@
use nest_struct::nest_struct;
use serde::Deserialize;
#[cfg(feature = "serde_derive")]
use serde::Serialize;

#[derive(Debug, PartialEq, Deserialize)]
#[cfg_attr(feature = "serde_derive", derive(Serialize))]
pub struct NodeName {
pub ar: String,
pub en: String,
pub fr: String,
}

#[derive(Debug, PartialEq, Deserialize)]
#[cfg_attr(
feature = "serde_derive",
derive(Serialize),
serde(tag = "type"),
serde(rename_all = "UPPERCASE")
)]
pub enum NodeType {
University,
Academy,
PrivateSchool,
Institute,
Faculty,
Department,
Specialty { terms: NodeTerms },
Sector { terms: NodeTerms },
}

#[derive(Debug, PartialEq, Clone, Deserialize)]
#[cfg_attr(
feature = "serde_derive",
derive(Serialize),
serde(rename_all = "camelCase")
)]
pub struct NodeTerms {
pub per_year: usize,
pub slots: Vec<i32>,
}

#[nest_struct]
#[derive(Debug, PartialEq, Deserialize)]
#[cfg_attr(feature = "serde_derive", derive(Serialize))]
pub struct Node {
pub name: NodeName,
pub name: nest! {
pub ar: String,
pub en: String,
pub fr: String,
},
#[cfg_attr(feature = "serde_derive", serde(flatten))]
pub r#type: NodeType,
pub r#type: nest! {
#[derive(Debug, PartialEq, Deserialize)]
#[cfg_attr(feature = "serde_derive", derive(Serialize), serde(tag = "type"), serde(rename_all = "UPPERCASE"))]
pub enum NodeType {
University,
Academy,
PrivateSchool,
Institute,
Faculty,
Department,
Specialty {
terms: nest! {
#[derive(Debug, PartialEq, Clone, Deserialize)]
#[cfg_attr(feature = "serde_derive", derive(Serialize), serde(rename_all = "camelCase"))]
pub struct NodeTerms {
pub per_year: usize,
pub slots: Vec<i32>,
}
}
},
Sector { terms: NodeTerms },
}
},
}

0 comments on commit 0086083

Please sign in to comment.