pdao_beacon_chain_common/
lib.rs1pub mod message;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
7pub enum AlumniType {
8 Undergradute(Department, u16),
9 Gradute(Department, u16),
10 Professor(Department, u16),
11}
12
13#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
15pub enum CommitteeType {
16 Committee(String),
17 Observer(String),
18}
19
20#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
21pub enum Department {
22 MATH, PHYS, CHEM, LIFE, AMSE, MECH, IMEN, EECE, CSED, CHEB, CITE, SEMI, MSUS, Other(String), }
37
38#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
39pub struct Member {
40 pub name_kor: String,
41 pub name_eng: String,
42 pub alumni_type: Vec<AlumniType>,
43 pub email: String,
44 pub homepage: String,
45 pub github_id: String,
46 pub committee_type: CommitteeType,
47 pub achievements: Vec<Achievement>,
48}
49
50#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone)]
51pub struct Achievement {
52 pub name: String,
53 pub description: String,
54}
55
56#[cfg(test)]
57mod tests {
58 use super::*;
59
60 #[test]
61 fn create_sample1() {
62 let member = Member {
63 name_kor: "김철수".to_string(),
64 name_eng: "Cheolsoo Kim".to_string(),
65 alumni_type: vec![AlumniType::Undergradute(Department::CSED, 2022)],
66 email: "ckim@dummy.co.kr".to_string(),
67 homepage: "ckim.dummy.co.kr".to_string(),
68 github_id: "ckim".to_string(),
69 committee_type: CommitteeType::Committee("2022-09-02".to_string()),
70 achievements: vec![Achievement {
71 name: "Good Job".to_string(),
72 description: "Did a great job".to_string(),
73 }],
74 };
75 let x = serde_json::to_string(&member).unwrap();
76 println!("{}", x);
77 }
78}