pdao_beacon_chain_common/
lib.rs

1pub mod message;
2
3use serde::{Deserialize, Serialize};
4
5/// Tagged by its dept. and the join/admission year. (e.g., (CSED, `2022`))
6#[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/// Tagged by the join day. (e.g., `2022-09-02`)
14#[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,          // Department of Mathematics
23    PHYS,          // Department of Physics
24    CHEM,          // Department of Chemistry
25    LIFE,          // Department of Life Sciences
26    AMSE,          // Department of Metarials Science and Engineering
27    MECH,          // Department of Mechanical Engineering
28    IMEN,          // Department of Industrial and Management Engineering
29    EECE,          // Department of Electrical Engineering
30    CSED,          // Department of Computer Science and Engineering
31    CHEB,          // Department of Chemical Engineering
32    CITE,          // Department of Convergence IT Engineering
33    SEMI,          // Department of Semiconductor Engineering
34    MSUS,          // MUENJAE School of Undergraduate Studies
35    Other(String), // Other Graduate Schools
36}
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}