Skip to content

Commit

Permalink
Fix course tags update bug (#187)
Browse files Browse the repository at this point in the history
* Change argument order for `db.get_filtered`

* Update course tags from actually tagged courses

* Get student's courses instead of tagged courses
  • Loading branch information
benny-n authored Jan 29, 2023
1 parent 27a6e62 commit dbe54c8
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 11 deletions.
28 changes: 21 additions & 7 deletions packages/server/src/api/students.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ use crate::{
middleware::auth::Sub,
resources::{
catalog::{Catalog, DisplayCatalog},
course::{self, Course},
course::{self, Course, CourseId},
user::{User, UserDetails, UserSettings},
},
};
Expand Down Expand Up @@ -93,13 +93,13 @@ pub async fn get_courses_by_filter(
match (params.get("name"), params.get("number")) {
(Some(name), None) => {
let courses = db
.get_filtered::<Course>(name, FilterType::Regex, "name")
.get_filtered::<Course>(FilterType::Regex, "name", name)
.await?;
Ok(HttpResponse::Ok().json(courses))
}
(None, Some(number)) => {
let courses = db
.get_filtered::<Course>(number, FilterType::Regex, "_id")
.get_filtered::<Course>(FilterType::Regex, "_id", number)
.await?;
Ok(HttpResponse::Ok().json(courses))
}
Expand Down Expand Up @@ -137,8 +137,22 @@ pub async fn compute_degree_status(mut user: User, db: Data<Db>) -> Result<HttpR

user.details.modified = false;

let vec_courses = db
.get_filtered::<Course>(catalog.get_all_course_ids(), FilterType::In, "_id")
let courses = db
.get_filtered::<Course>(
FilterType::In,
"_id",
catalog
.get_all_course_ids()
.into_iter()
.chain(
user.details
.degree_status
.course_statuses
.iter()
.map(|cs| cs.course.id.clone()),
)
.collect::<Vec<CourseId>>(),
)
.await?;

// Fill tags for all student courses
Expand All @@ -147,7 +161,7 @@ pub async fn compute_degree_status(mut user: User, db: Data<Db>) -> Result<HttpR
.course_statuses
.iter_mut()
.for_each(|course_status| {
course_status.course.tags = vec_courses
course_status.course.tags = courses
.iter()
.find(|course| course.id == course_status.course.id)
.and_then(|course| course.tags.clone());
Expand All @@ -160,7 +174,7 @@ pub async fn compute_degree_status(mut user: User, db: Data<Db>) -> Result<HttpR

user.details
.degree_status
.compute(catalog, course::vec_to_map(vec_courses));
.compute(catalog, course::vec_to_map(courses));

if user.settings.compute_in_progress {
user.details.degree_status.set_to_in_progress(course_list);
Expand Down
2 changes: 1 addition & 1 deletion packages/server/src/db/services.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,9 @@ impl Db {

pub async fn get_filtered<T>(
&self,
filter: impl Into<Bson>,
filter_type: FilterType,
field_to_filter: impl AsRef<str>,
filter: impl Into<Bson>,
) -> Result<Vec<T>, AppError>
where
T: CollectionName + DeserializeOwned + Send + Sync + Unpin,
Expand Down
6 changes: 3 additions & 3 deletions packages/server/src/db/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ pub async fn test_get_courses_by_filters() {
let db = Db::new().await;

let courses = db
.get_filtered::<Course>("חשבון אינפיניטסימלי 1מ'", FilterType::Regex, "name")
.get_filtered::<Course>(FilterType::Regex, "name", "חשבון אינפיניטסימלי 1מ'")
.await
.expect("Failed to get courses by name");

Expand All @@ -72,7 +72,7 @@ pub async fn test_get_courses_by_filters() {
assert_eq!(courses[0].id, "104031");

let courses = db
.get_filtered::<Course>("104031", FilterType::Regex, "_id")
.get_filtered::<Course>(FilterType::Regex, "_id", "104031")
.await
.expect("Failed to get courses by number");

Expand All @@ -81,7 +81,7 @@ pub async fn test_get_courses_by_filters() {
assert_eq!(courses[0].id, "104031");

let courses = db
.get_filtered::<Course>(vec!["104031", "104166"], FilterType::In, "_id")
.get_filtered::<Course>(FilterType::In, "_id", vec!["104031", "104166"])
.await
.expect("Failed to get courses by number");

Expand Down

0 comments on commit dbe54c8

Please sign in to comment.