diff --git a/htyws/src/ws_all.rs b/htyws/src/ws_all.rs index 262e181..9f32f34 100644 --- a/htyws/src/ws_all.rs +++ b/htyws/src/ws_all.rs @@ -614,11 +614,30 @@ pub fn raw_find_course_group_by_ids( .clone() .vals .ok_or_else(|| anyhow!("vals is required"))?; + let mut conn_holder = extract_conn(fetch_db_conn(&db_pool)?); + let conn = conn_holder.deref_mut(); let mut res = vec![]; for id in c_ids { - let item = - CourseGroup::find_by_id(&id, extract_conn(fetch_db_conn(&db_pool)?).deref_mut())?; - let req = item.to_req(); + let item = CourseGroup::find_by_id(&id, conn)?; + let mut req = item.to_req(); + // Resolve course_section_ids into full course_sections objects + if let Some(ref section_ids) = item.course_section_ids { + if let Some(ref ids) = section_ids.vals { + let mut sections = Vec::new(); + for sid in ids { + match CourseSection::find_by_id(sid, conn) { + Ok(section) => sections.push(section.to_req()), + Err(e) => error!( + "raw_find_course_group_by_ids -> failed to find course_section {}: {}", + sid, e + ), + } + } + if !sections.is_empty() { + req.course_sections = Some(sections); + } + } + } res.push(req) } Ok(res) diff --git a/htyws_models/src/models.rs b/htyws_models/src/models.rs index 96afc68..4fc5168 100644 --- a/htyws_models/src/models.rs +++ b/htyws_models/src/models.rs @@ -557,6 +557,7 @@ pub struct ReqCourseGroup { pub id: Option, pub group_name: Option, pub course_section_ids: Option>, + pub course_sections: Option>, pub created_at: Option, pub created_by: Option, pub updated_at: Option, @@ -5422,6 +5423,7 @@ impl CourseGroup { id: Some(self.id.clone()), group_name: Some(self.group_name.clone()), course_section_ids: self.course_section_ids.clone(), + course_sections: None, created_at: self.created_at.clone(), created_by: self.created_by.clone(), updated_at: self.updated_at.clone(),