From b5a90d4b041ffd905e814de9db9851fa7ca7fb13 Mon Sep 17 00:00:00 2001 From: 39bytes Date: Thu, 30 May 2024 12:17:46 -0400 Subject: [PATCH 1/3] don't combine schedules when scraping --- crates/model/src/course.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/model/src/course.rs b/crates/model/src/course.rs index 713bb152..cc9804d0 100644 --- a/crates/model/src/course.rs +++ b/crates/model/src/course.rs @@ -72,7 +72,6 @@ impl Course { logical_corequisites: other .logical_corequisites .or(self.logical_corequisites), - schedule: Some(other.schedule.combine_opt(self.schedule)), ..other } } From 3867295263cf9496d6a089032166bb2368a3717f Mon Sep 17 00:00:00 2001 From: 39bytes Date: Fri, 31 May 2024 13:34:48 -0400 Subject: [PATCH 2/3] remove unused import --- crates/model/src/lib.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/crates/model/src/lib.rs b/crates/model/src/lib.rs index 0775debb..6e3f2780 100644 --- a/crates/model/src/lib.rs +++ b/crates/model/src/lib.rs @@ -1,6 +1,5 @@ use { bson::{doc, Bson, DateTime}, - combine::Combine, derivative::Derivative, serde::{Deserialize, Serialize}, std::{ From 8e9a698ccb99849b60c52ccc882d9b3760d332c4 Mon Sep 17 00:00:00 2001 From: 39bytes Date: Thu, 30 May 2024 13:52:59 -0400 Subject: [PATCH 3/3] invalidate course schedules --- crates/db/src/db.rs | 9 +++++++++ crates/db/src/initializer.rs | 5 +++++ crates/model/src/initialize_options.rs | 1 + src/server.rs | 7 +++++++ 4 files changed, 22 insertions(+) diff --git a/crates/db/src/db.rs b/crates/db/src/db.rs index 04991071..48f43cd1 100644 --- a/crates/db/src/db.rs +++ b/crates/db/src/db.rs @@ -1139,6 +1139,15 @@ impl Db { ) } + pub async fn invalidate_course_schedules(&self) -> Result { + self + .database + .collection::(Self::COURSE_COLLECTION) + .update_many(doc! {}, doc! {"$set": {"schedule": null}}, None) + .await?; + Ok(()) + } + #[cfg(test)] async fn instructors(&self) -> Result> { Ok( diff --git a/crates/db/src/initializer.rs b/crates/db/src/initializer.rs index e062f444..07f0bd13 100644 --- a/crates/db/src/initializer.rs +++ b/crates/db/src/initializer.rs @@ -132,6 +132,11 @@ impl Initializer { } } + if self.options.invalidate_schedules { + info!("Invalidating course schedules..."); + self.db.invalidate_course_schedules().await?; + } + for seed in seeds { match seed { Seed::Courses((path, courses)) if !self.options.skip_courses => { diff --git a/crates/model/src/initialize_options.rs b/crates/model/src/initialize_options.rs index 276e16b2..d1219296 100644 --- a/crates/model/src/initialize_options.rs +++ b/crates/model/src/initialize_options.rs @@ -7,4 +7,5 @@ pub struct InitializeOptions { pub skip_courses: bool, pub skip_reviews: bool, pub source: PathBuf, + pub invalidate_schedules: bool, } diff --git a/src/server.rs b/src/server.rs index 8893db14..7cbe0138 100644 --- a/src/server.rs +++ b/src/server.rs @@ -18,6 +18,12 @@ pub(crate) struct Server { skip_courses: bool, #[clap(long, default_value = "false", help = "Skip review seeding")] skip_reviews: bool, + #[clap( + long, + default_value = "false", + help = "Overwrite course schedules instead of combining" + )] + invalidate_schedules: bool, } #[derive(Debug)] @@ -65,6 +71,7 @@ impl Server { multithreaded: self.multithreaded, skip_courses: self.skip_courses, skip_reviews: self.skip_reviews, + invalidate_schedules: self.invalidate_schedules, source, }) .await