diff --git a/services/headless-lms/migrations/20240717102507_add_chapter_completion_requirements.up.sql b/services/headless-lms/migrations/20240717102507_add_chapter_completion_requirements.up.sql index 75c801936f0..4af26726a9c 100644 --- a/services/headless-lms/migrations/20240717102507_add_chapter_completion_requirements.up.sql +++ b/services/headless-lms/migrations/20240717102507_add_chapter_completion_requirements.up.sql @@ -1,6 +1,6 @@ -- Add up migration script here ALTER TABLE course_modules -ADD COLUMN is_completion_requirement_by_chapter BOOLEAN DEFAULT NULL; +ADD COLUMN is_completion_requirement_by_chapter BOOLEAN NOT NULL DEFAULT FALSE; COMMENT ON COLUMN course_modules.is_completion_requirement_by_chapter IS 'Determine if a chapter needs to specify its completion_requirement or not'; CREATE TABLE chapter_completion_requirements ( id UUID DEFAULT uuid_generate_v4() PRIMARY KEY, diff --git a/services/headless-lms/models/.sqlx/query-3537618f4c53872b727fb68c56e5c799d03b8af65f3e8b8294a7ba49ddab47b8.json b/services/headless-lms/models/.sqlx/query-3537618f4c53872b727fb68c56e5c799d03b8af65f3e8b8294a7ba49ddab47b8.json index a8f145f9d4e..32d4c4be0bc 100644 --- a/services/headless-lms/models/.sqlx/query-3537618f4c53872b727fb68c56e5c799d03b8af65f3e8b8294a7ba49ddab47b8.json +++ b/services/headless-lms/models/.sqlx/query-3537618f4c53872b727fb68c56e5c799d03b8af65f3e8b8294a7ba49ddab47b8.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "3537618f4c53872b727fb68c56e5c799d03b8af65f3e8b8294a7ba49ddab47b8" diff --git a/services/headless-lms/models/.sqlx/query-415630997608804ca8202e911e5d8b51cbfdfd965a3920aea7cdaa9a793cd7e8.json b/services/headless-lms/models/.sqlx/query-415630997608804ca8202e911e5d8b51cbfdfd965a3920aea7cdaa9a793cd7e8.json index 501cd27d0b4..4be18caf635 100644 --- a/services/headless-lms/models/.sqlx/query-415630997608804ca8202e911e5d8b51cbfdfd965a3920aea7cdaa9a793cd7e8.json +++ b/services/headless-lms/models/.sqlx/query-415630997608804ca8202e911e5d8b51cbfdfd965a3920aea7cdaa9a793cd7e8.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "415630997608804ca8202e911e5d8b51cbfdfd965a3920aea7cdaa9a793cd7e8" diff --git a/services/headless-lms/models/.sqlx/query-506df024df23a7e649d8d69b1a1a37bf7b13743f2fea316a0012e2f779508679.json b/services/headless-lms/models/.sqlx/query-506df024df23a7e649d8d69b1a1a37bf7b13743f2fea316a0012e2f779508679.json index 2cb09f59fbe..2ba966bd38a 100644 --- a/services/headless-lms/models/.sqlx/query-506df024df23a7e649d8d69b1a1a37bf7b13743f2fea316a0012e2f779508679.json +++ b/services/headless-lms/models/.sqlx/query-506df024df23a7e649d8d69b1a1a37bf7b13743f2fea316a0012e2f779508679.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "506df024df23a7e649d8d69b1a1a37bf7b13743f2fea316a0012e2f779508679" diff --git a/services/headless-lms/models/.sqlx/query-527d742c378dfc52f5d1c999138ee8c12547442f36d8ea9b3df18405f7e526d5.json b/services/headless-lms/models/.sqlx/query-527d742c378dfc52f5d1c999138ee8c12547442f36d8ea9b3df18405f7e526d5.json index 65ab2575852..68f798ef541 100644 --- a/services/headless-lms/models/.sqlx/query-527d742c378dfc52f5d1c999138ee8c12547442f36d8ea9b3df18405f7e526d5.json +++ b/services/headless-lms/models/.sqlx/query-527d742c378dfc52f5d1c999138ee8c12547442f36d8ea9b3df18405f7e526d5.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "527d742c378dfc52f5d1c999138ee8c12547442f36d8ea9b3df18405f7e526d5" diff --git a/services/headless-lms/models/.sqlx/query-5a540e7832d883d03e1aa9e24e816f3dd434cd1f754395d0e23b3a3b587ec75c.json b/services/headless-lms/models/.sqlx/query-5a540e7832d883d03e1aa9e24e816f3dd434cd1f754395d0e23b3a3b587ec75c.json index 1adcf851177..d6259e1679f 100644 --- a/services/headless-lms/models/.sqlx/query-5a540e7832d883d03e1aa9e24e816f3dd434cd1f754395d0e23b3a3b587ec75c.json +++ b/services/headless-lms/models/.sqlx/query-5a540e7832d883d03e1aa9e24e816f3dd434cd1f754395d0e23b3a3b587ec75c.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "5a540e7832d883d03e1aa9e24e816f3dd434cd1f754395d0e23b3a3b587ec75c" diff --git a/services/headless-lms/models/.sqlx/query-61bf107004b50428f84d69be289d73379c985a0e04a2e4f02471b79920990123.json b/services/headless-lms/models/.sqlx/query-61bf107004b50428f84d69be289d73379c985a0e04a2e4f02471b79920990123.json index dedbf283f47..77554bb61c9 100644 --- a/services/headless-lms/models/.sqlx/query-61bf107004b50428f84d69be289d73379c985a0e04a2e4f02471b79920990123.json +++ b/services/headless-lms/models/.sqlx/query-61bf107004b50428f84d69be289d73379c985a0e04a2e4f02471b79920990123.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "61bf107004b50428f84d69be289d73379c985a0e04a2e4f02471b79920990123" diff --git a/services/headless-lms/models/.sqlx/query-ea0349456e96617af60df991d87884f3275d8f8f78f7105db2644aeeebd05b9c.json b/services/headless-lms/models/.sqlx/query-ea0349456e96617af60df991d87884f3275d8f8f78f7105db2644aeeebd05b9c.json index 8923dcfbff6..970dc416aa8 100644 --- a/services/headless-lms/models/.sqlx/query-ea0349456e96617af60df991d87884f3275d8f8f78f7105db2644aeeebd05b9c.json +++ b/services/headless-lms/models/.sqlx/query-ea0349456e96617af60df991d87884f3275d8f8f78f7105db2644aeeebd05b9c.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "ea0349456e96617af60df991d87884f3275d8f8f78f7105db2644aeeebd05b9c" diff --git a/services/headless-lms/models/.sqlx/query-fc3411dc016ab2ff4cff7bc8032262ed4383920feacfab27b719c6747fce6056.json b/services/headless-lms/models/.sqlx/query-fc3411dc016ab2ff4cff7bc8032262ed4383920feacfab27b719c6747fce6056.json index e89d15d4dcc..6bfbe94f9ac 100644 --- a/services/headless-lms/models/.sqlx/query-fc3411dc016ab2ff4cff7bc8032262ed4383920feacfab27b719c6747fce6056.json +++ b/services/headless-lms/models/.sqlx/query-fc3411dc016ab2ff4cff7bc8032262ed4383920feacfab27b719c6747fce6056.json @@ -115,7 +115,7 @@ false, false, false, - true + false ] }, "hash": "fc3411dc016ab2ff4cff7bc8032262ed4383920feacfab27b719c6747fce6056" diff --git a/services/headless-lms/models/src/course_modules.rs b/services/headless-lms/models/src/course_modules.rs index fc0753e3272..1de871e1be0 100644 --- a/services/headless-lms/models/src/course_modules.rs +++ b/services/headless-lms/models/src/course_modules.rs @@ -21,7 +21,7 @@ struct CourseModulesSchema { ects_credits: Option, enable_registering_completion_to_uh_open_university: bool, certification_enabled: bool, - is_completion_requirement_by_chapter: Option, + is_completion_requirement_by_chapter: bool, } /** * Based on [CourseModulesSchema] but completion_policy parsed and addded (and some not needeed fields removed). @@ -44,6 +44,7 @@ pub struct CourseModule { pub ects_credits: Option, pub enable_registering_completion_to_uh_open_university: bool, pub certification_enabled: bool, + pub is_completion_requirement_by_chapter: bool, } impl CourseModule { @@ -63,6 +64,7 @@ impl CourseModule { ects_credits: None, enable_registering_completion_to_uh_open_university: false, certification_enabled: false, + is_completion_requirement_by_chapter: false, } } pub fn set_timestamps( @@ -143,6 +145,7 @@ impl From for CourseModule { enable_registering_completion_to_uh_open_university: schema .enable_registering_completion_to_uh_open_university, certification_enabled: schema.certification_enabled, + is_completion_requirement_by_chapter: schema.is_completion_requirement_by_chapter, } } } @@ -651,6 +654,25 @@ WHERE id = $3 Ok(()) } +pub async fn update_is_chapter_completion_requirements( + conn: &mut PgConnection, + id: Uuid, + is_chapter_completion_requirements: bool, +) -> ModelResult<()> { + sqlx::query!( + " + UPDATE course_modules + SET is_completion_requirement_by_chapter = $2 + WHERE id = $1 + ", + id, + is_chapter_completion_requirements, + ) + .execute(conn) + .await?; + Ok(()) +} + pub async fn update( conn: &mut PgConnection, id: Uuid,