1use serde::Deserialize;
2use serde::Serialize;
3use postgres_types::{FromSql, ToSql};
4
5#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, Eq, Ord, PartialOrd, FromSql, ToSql)]
6#[postgres(name = "mark_type")]
7pub enum MarkType {
8 A,
9 A_,
10 AB,
11 B,
12 B_,
13 C,
14 C_,
15 F,
16 P,
17 D,
18 E,
19 HD,
20 S,
21 F1,
22 F2,
23 NGP,
24 P1,
25 P2,
26 N,
27 CR,
28 PC,
29 Cr,
30 #[allow(non_camel_case_types)]
31 g2,
32 #[allow(non_camel_case_types)]
33 g3,
34 #[allow(non_camel_case_types)]
35 g4,
36 #[allow(non_camel_case_types)]
37 g1,
38 #[allow(non_camel_case_types)]
39 g6,
40 #[allow(non_camel_case_types)]
41 g7,
42 #[allow(non_camel_case_types)]
43 g8,
44 #[allow(non_camel_case_types)]
45 g9,
46 #[allow(non_camel_case_types)]
47 g10,
48 #[allow(non_camel_case_types)]
49 g1_1,
50 #[allow(non_camel_case_types)]
51 g1_2,
52 #[allow(non_camel_case_types)]
53 g1_3,
54 #[allow(non_camel_case_types)]
55 g1_4,
56 #[allow(non_camel_case_types)]
57 g1_5,
58 #[allow(non_camel_case_types)]
59 g2_1,
60 #[allow(non_camel_case_types)]
61 g2_2,
62 #[allow(non_camel_case_types)]
63 g2_3,
64 #[allow(non_camel_case_types)]
65 g2_4,
66 #[allow(non_camel_case_types)]
67 g2_5,
68 #[allow(non_camel_case_types)]
69 g3_1,
70 #[allow(non_camel_case_types)]
71 g3_2,
72 #[allow(non_camel_case_types)]
73 g3_3,
74 #[allow(non_camel_case_types)]
75 g3_4,
76 #[allow(non_camel_case_types)]
77 g3_5,
78 #[allow(non_camel_case_types)]
79 g4_1,
80 #[allow(non_camel_case_types)]
81 g4_2,
82 #[allow(non_camel_case_types)]
83 g4_3,
84 #[allow(non_camel_case_types)]
85 g4_4,
86 #[allow(non_camel_case_types)]
87 g4_5,
88 #[allow(non_camel_case_types)]
89 g5,
90 #[allow(non_camel_case_types)]
91 g5_1,
92 #[allow(non_camel_case_types)]
93 g5_2,
94 #[allow(non_camel_case_types)]
95 g5_3,
96 #[allow(non_camel_case_types)]
97 g5_4,
98 #[allow(non_camel_case_types)]
99 g5_5,
100 #[allow(non_camel_case_types)]
101 absent,
102 #[allow(non_camel_case_types)]
103 noMark,
104 #[allow(non_camel_case_types)]
105 acceptableExcuse,
106 #[allow(non_camel_case_types)]
107 noAcceptableExcuse,
108}
109
110impl MarkType {
111 pub fn from_str(input: &str) -> MarkType {
112 match input {
113 "A" => MarkType::A,
114 "A_" => MarkType::A_,
115 "AB" => MarkType::AB,
116 "B" => MarkType::B,
117 "B_" => MarkType::B_,
118 "C" => MarkType::C,
119 "C_" => MarkType::C_,
120 "F" => MarkType::F,
121 "P" => MarkType::P,
122 "D" => MarkType::D,
123 "E" => MarkType::E,
124 "HD" => MarkType::HD,
125 "S" => MarkType::S,
126 "F1" => MarkType::F1,
127 "F2" => MarkType::F2,
128 "NGP" => MarkType::NGP,
129 "P1" => MarkType::P1,
130 "P2" => MarkType::P2,
131 "N" => MarkType::N,
132 "CR" => MarkType::CR,
133 "PC" => MarkType::PC,
134 "Cr" => MarkType::Cr,
135 "g2" => MarkType::g2,
136 "g3" => MarkType::g3,
137 "g4" => MarkType::g4,
138 "g1" => MarkType::g1,
139 "g6" => MarkType::g6,
140 "g7" => MarkType::g7,
141 "g8" => MarkType::g8,
142 "g9" => MarkType::g9,
143 "g10" => MarkType::g10,
144 "g1_1" => MarkType::g1_1,
145 "g1_2" => MarkType::g1_2,
146 "g1_3" => MarkType::g1_3,
147 "g1_4" => MarkType::g1_4,
148 "g1_5" => MarkType::g1_5,
149 "g2_1" => MarkType::g2_1,
150 "g2_2" => MarkType::g2_2,
151 "g2_3" => MarkType::g2_3,
152 "g2_4" => MarkType::g2_4,
153 "g2_5" => MarkType::g2_5,
154 "g3_1" => MarkType::g3_1,
155 "g3_2" => MarkType::g3_2,
156 "g3_3" => MarkType::g3_3,
157 "g3_4" => MarkType::g3_4,
158 "g3_5" => MarkType::g3_5,
159 "g4_1" => MarkType::g4_1,
160 "g4_2" => MarkType::g4_2,
161 "g4_3" => MarkType::g4_3,
162 "g4_4" => MarkType::g4_4,
163 "g4_5" => MarkType::g4_5,
164 "g5" => MarkType::g5,
165 "g5_1" => MarkType::g5_1,
166 "g5_2" => MarkType::g5_2,
167 "g5_3" => MarkType::g5_3,
168 "g5_4" => MarkType::g5_4,
169 "g5_5" => MarkType::g5_5,
170 "absent" => MarkType::absent,
171 "noMark" => MarkType::noMark,
172 "acceptableExcuse" => MarkType::acceptableExcuse,
173 "noAcceptableExcuse" => MarkType::noAcceptableExcuse,
174
175 _ => MarkType::noMark,
176 }
177 }
178}