assist/
lib.rs

1use serde_derive::Deserialize;
2use serde_derive::Serialize;
3use serde_json::Value;
4
5#[derive(Default, Deserialize, Serialize, Clone, Debug)]
6pub struct Institutions {
7    pub id: u32,
8    pub names: Vec<Name>,
9    pub code: String,
10    #[serde(rename = "prefers2016LegacyReport")]
11    pub prefers_legacy_report: bool,
12    #[serde(rename = "isCommunityCollege")]
13    pub is_cc: bool,
14    pub category: u32,
15    #[serde(rename = "termType")]
16    pub term_type: u32,
17    #[serde(rename = "beginId")]
18    pub begin_id: u32,
19    #[serde(rename = "termTypeAcademicYears")]
20    pub term_type_academic_years: Vec<TermTuple>
21}
22
23#[derive(Default, Deserialize, Serialize, Clone, Debug)]
24pub struct Institution {
25    pub id: u32,
26    pub code: String,
27    #[serde(rename = "isCommunityCollege")]
28    pub is_cc: bool,
29    pub category: String,
30    #[serde(rename = "termType")]
31    pub term_type: String,
32    pub names: Vec<Name>,
33    #[serde(rename = "termTypeAcademicYears")]
34    pub term_type_academic_years: Vec<TermHistory>,
35    #[serde(rename = "beginId")]
36    pub begin_id: u32,
37    pub end_id: Option<u32>,
38}
39
40#[derive(Default, Deserialize, Serialize, Clone, Debug)]
41#[serde(rename_all = "camelCase")]
42pub struct TermHistory {
43    pub term_type: String,
44    pub from_year: u32
45}
46
47#[derive(Default, Debug, Clone, Deserialize, Serialize)]
48pub struct InstitutionCourseAgreement {
49    pub receiving_institution: Institution,
50    pub sending_institution: Institution,
51    pub courses: Vec<Articulation>,
52}
53
54#[derive(Deserialize, Serialize, Clone, Debug)]
55pub struct Name {
56    pub name: String,
57    #[serde(rename = "fromYear")]
58    pub from_year: Option<u32>,
59    #[serde(rename = "hasDepartments")]
60    pub has_departments: bool,
61    #[serde(rename = "hideInList")]
62    pub hide_in_list: bool,
63}
64
65#[derive(Deserialize, Serialize, Clone, Debug)]
66pub struct TermTuple {
67    #[serde(rename = "termType")]
68    pub term_type: u32,
69    #[serde(rename = "fromYear")]
70    pub from_year: u32,
71}
72
73#[derive(Deserialize, Serialize, Clone, Debug)]
74pub struct AcademicYear {
75    #[serde(rename = "Id")]
76    pub id: u32,
77    #[serde(rename = "FallYear")]
78    pub fall_year: u32,
79}
80
81#[derive(Deserialize, Serialize, Clone, Debug)]
82pub struct Agreement {
83    #[serde(rename = "institutionParentId")]
84    pub institution_parent_id: u32,
85    #[serde(rename = "institutionName")]
86    pub institution_name: String,
87    pub code: String,
88    #[serde(rename = "isCommunityCollege")]
89    pub is_cc: bool,
90    #[serde(rename = "sendingYearIds")]
91    pub sending_year_ids: Vec<u32>,
92    #[serde(rename = "receivingYearIds")]
93    pub receiving_year_ids: Vec<u32>,
94}
95
96#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
97#[serde(rename_all = "camelCase")]
98pub struct AllPrefix {
99    pub name: String,
100    pub articulations: Vec<Articulation>,
101}
102
103#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
104#[serde(rename_all = "camelCase")]
105pub struct AllDepartment {
106    pub name: String,
107    pub articulations: Vec<Articulation>,
108}
109
110#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
111#[serde(rename_all = "camelCase")]
112pub struct AllMajor {
113    pub template_cell_id: String,
114    pub articulation: Articulation,
115    pub receiving_attributes: Option<ReceivingAttributes>,
116}
117
118#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
119#[serde(rename_all = "camelCase")]
120pub struct Articulation {
121    #[serde(rename = "type")]
122    pub type_field: String,
123    pub course: Option<Course>,
124    #[serde(default)]
125    pub visible_cross_listed_courses: Option<Vec<Course>>,
126    #[serde(default)]
127    pub course_attributes: Option<Vec<Value>>,
128    pub sending_articulation: Option<SendingArticulation>,
129    #[serde(default)]
130    pub template_overrides: Option<Vec<Value>>,
131    #[serde(default)]
132    pub attributes: Option<Vec<Value>>,
133    #[serde(default)]
134    pub receiving_attributes: Option<Vec<Value>>,
135    pub requirement: Option<Requirement>,
136    #[serde(default)]
137    pub requirement_attributes: Option<Vec<Value>>,
138    pub series: Option<Series>,
139    #[serde(default)]
140    pub series_attributes: Option<Vec<Value>>,
141    pub general_education_area: Option<GeneralEducationArea>,
142    #[serde(default)]
143    pub general_education_area_attributes: Option<Vec<Value>>,
144}
145
146#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
147#[serde(rename_all = "camelCase")]
148pub struct Course {
149    #[serde(default)]
150    pub id: String,
151    #[serde(default)]
152    pub position: i64,
153    #[serde(default)]
154    pub published_course_identifier_year_term_id: Option<i64>,
155    #[serde(default)]
156    pub denied_on: Option<String>,
157    #[serde(default)]
158    pub attributes: Option<Vec<Value>>,
159    pub course_identifier_parent_id: i64,
160    pub course_title: Option<String>,
161    pub course_number: Option<String>,
162    pub prefix: Option<String>,
163    pub prefix_parent_id: Option<i64>,
164    pub prefix_description: Option<String>,
165    pub department_parent_id: Option<i64>,
166    pub department: Option<String>,
167    pub begin: Option<String>,
168    pub end: Option<String>,
169    pub min_units: Option<f32>,
170    pub max_units: Option<f32>,
171    pub pathways: Option<Value>,
172}
173
174#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
175#[serde(rename_all = "camelCase")]
176pub struct SendingArticulation {
177    pub no_articulation_reason: Option<String>,
178    pub denied_courses: Option<Vec<Course>>,
179    #[serde(default)]
180    pub items: Vec<Item>,
181    pub course_group_conjunctions: Option<Vec<CourseGroupConjunction>>,
182    #[serde(rename = "type")]
183    pub type_field: String,
184    pub attributes: Option<Vec<Value>>,
185}
186
187#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
188#[serde(rename_all = "camelCase")]
189pub struct Item {
190    #[serde(default)]
191    pub course_conjunction: String,
192    #[serde(default)]
193    pub items: Vec<Item2>,
194    pub attributes: Option<Vec<Value>>,
195    pub position: i64,
196    #[serde(rename = "type")]
197    pub type_field: String,
198}
199
200#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
201#[serde(rename_all = "camelCase")]
202pub struct Item2 {
203    pub visible_cross_listed_courses: Option<Vec<Course>>,
204    pub requisites: Option<Vec<Value>>,
205    pub attributes: Option<Vec<Attribute>>,
206    pub course_identifier_parent_id: i64,
207    pub course_title: Option<String>,
208    pub course_number: Option<String>,
209    pub prefix: Option<String>,
210    pub prefix_parent_id: Option<i64>,
211    pub prefix_description: Option<String>,
212    pub department_parent_id: Option<i64>,
213    pub department: Option<String>,
214    pub begin: Option<String>,
215    pub end: Option<String>,
216    pub min_units: Option<f32>,
217    pub max_units: Option<f32>,
218    #[serde(default)]
219    pub pathways: Option<Vec<Value>>,
220    pub published_course_identifier_year_term_id: Option<i64>,
221    pub position: i64,
222    #[serde(rename = "type")]
223    pub type_field: String,
224}
225
226#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
227#[serde(rename_all = "camelCase")]
228pub struct Attribute {
229    pub position: i64,
230    pub content: String,
231}
232
233#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
234#[serde(rename_all = "camelCase")]
235pub struct CourseGroupConjunction {
236    pub id: String,
237    pub sending_articulation_id: String,
238    pub group_conjunction: String,
239    pub sending_course_group_begin_position: i64,
240    pub sending_course_group_end_position: i64,
241}
242
243#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
244#[serde(rename_all = "camelCase")]
245pub struct Series {
246    pub conjunction: String,
247    pub name: String,
248    pub courses: Vec<Course>,
249    pub series_pathways: Option<Value>,
250}
251
252#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
253#[serde(rename_all = "camelCase")]
254pub struct Requirement {
255    pub name: String,
256}
257
258#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
259#[serde(rename_all = "camelCase")]
260pub struct GeneralEducationArea {
261    pub code: String,
262    pub name: String,
263    pub courses: Vec<Value>,
264}
265
266#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
267#[serde(rename_all = "camelCase")]
268pub struct ReceivingAttributes {
269    #[serde(rename = "type")]
270    pub type_field: String,
271    #[serde(default)]
272    pub course_attributes: Option<Vec<Value>>,
273    pub attributes: Option<Vec<Value>>,
274    #[serde(default)]
275    pub requirement_attributes: Option<Vec<Value>>,
276    #[serde(default)]
277    pub series_attributes: Option<Vec<Value>>,
278    #[serde(default)]
279    pub series_course_attributes: Option<Vec<Value>>,
280    #[serde(default)]
281    pub general_education_area_attributes: Option<Vec<Value>>,
282}