neis_client/types/
class_info.rs1#![allow(non_snake_case)]
2use super::ToQueryString;
3use super::{deserialize_i32_from_string, deserialize_u8_from_string};
4use form_urlencoded::Serializer;
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize)]
8pub struct ClassInfoParams {
9 pub ATPT_OFCDC_SC_CODE: String,
11 pub SD_SCHUL_CODE: String,
13 pub AY: Option<String>,
15 pub GRADE: Option<String>,
17 pub DGHT_CRSE_SC_NM: Option<String>,
19 pub SCHUL_CRSE_SC_NM: Option<String>,
21 pub ORD_SC_NM: Option<String>,
23 pub DDDEP_NM: Option<String>,
25}
26
27impl ClassInfoParams {
28 pub fn new(atpt_ofcdc_sc_code: &str, sd_schul_code: &str) -> Self {
29 Self {
30 ATPT_OFCDC_SC_CODE: atpt_ofcdc_sc_code.to_owned(),
31 SD_SCHUL_CODE: sd_schul_code.to_owned(),
32 AY: None,
33 GRADE: None,
34 DGHT_CRSE_SC_NM: None,
35 SCHUL_CRSE_SC_NM: None,
36 ORD_SC_NM: None,
37 DDDEP_NM: None,
38 }
39 }
40
41 pub fn ay(mut self, year: i32) -> Self {
42 self.AY = Some(year.to_string());
43 self
44 }
45 pub fn grade(mut self, grade: u8) -> Self {
46 self.GRADE = Some(grade.to_string());
47 self
48 }
49}
50
51impl ToQueryString for ClassInfoParams {
52 fn to_query_string(&self) -> String {
53 let mut serializer = Serializer::new(String::new());
54
55 serializer.append_pair("ATPT_OFCDC_SC_CODE", &self.ATPT_OFCDC_SC_CODE);
56 serializer.append_pair("SD_SCHUL_CODE", &self.SD_SCHUL_CODE);
57 if let Some(s) = &self.AY {
58 serializer.append_pair("AY", s);
59 }
60 if let Some(s) = &self.GRADE {
61 serializer.append_pair("GRADE", s);
62 }
63 if let Some(s) = &self.DGHT_CRSE_SC_NM {
64 serializer.append_pair("DGHT_CRSE_SC_NM", s);
65 }
66 if let Some(s) = &self.SCHUL_CRSE_SC_NM {
67 serializer.append_pair("SCHUL_CRSE_SC_NM", s);
68 }
69 if let Some(s) = &self.ORD_SC_NM {
70 serializer.append_pair("ORD_SC_NM", s);
71 }
72 if let Some(s) = &self.DDDEP_NM {
73 serializer.append_pair("DDDEP_NM", s);
74 }
75
76 serializer.finish()
77 }
78}
79
80#[derive(Debug, Clone, Deserialize, Hash)]
81pub struct ClassInfoItem {
82 pub ATPT_OFCDC_SC_CODE: String,
85
86 pub ATPT_OFCDC_SC_NM: String,
89
90 pub SD_SCHUL_CODE: String,
93
94 pub SCHUL_NM: String,
97
98 #[serde(deserialize_with = "deserialize_i32_from_string")]
101 pub AY: i32,
102
103 #[serde(deserialize_with = "deserialize_u8_from_string")]
106 pub GRADE: u8,
107
108 pub DGHT_CRSE_SC_NM: Option<String>,
111
112 pub SCHUL_CRSE_SC_NM: Option<String>,
115
116 pub ORD_SC_NM: Option<String>,
119
120 pub DDDEP_NM: Option<String>,
123
124 pub CLASS_NM: Option<String>,
127
128 pub LOAD_DTM: String,
131}