headless_lms_server/programs/seed/seed_courses/
seed_introduction_to_codes.rs1use crate::programs::seed::builder::chapter::ChapterBuilder;
2use crate::programs::seed::builder::context::SeedContext;
3use crate::programs::seed::builder::course::{CourseBuilder, CourseInstanceConfig};
4use crate::programs::seed::builder::module::ModuleBuilder;
5use crate::programs::seed::seed_courses::CommonCourseData;
6use anyhow::Result;
7use headless_lms_models::roles::UserRole;
8use tracing::info;
9use uuid::Uuid;
10
11pub async fn seed_introduction_to_codes(
12 course_id: Uuid,
13 course_name: &str,
14 course_slug: &str,
15 common_course_data: CommonCourseData,
16) -> Result<Uuid> {
17 let CommonCourseData {
18 db_pool,
19 organization_id: org,
20 teacher_user_id,
21 student_user_id: _student,
22 langs_user_id: _langs_user_id,
23 example_normal_user_ids: _users,
24 jwt_key: _jwt_key,
25 base_url: _base_url,
26 } = common_course_data;
27
28 let mut conn = db_pool.acquire().await?;
29 let cx = SeedContext {
30 teacher: teacher_user_id,
31 org,
32 base_course_ns: course_id,
33 };
34
35 info!("inserting introduction to codes course {}", course_name);
36
37 let course = CourseBuilder::new(course_name, course_slug)
38 .desc("Course for testing description suggestion with uh course codes")
39 .course_id(course_id)
40 .instance(CourseInstanceConfig {
41 name: None,
42 description: None,
43 support_email: None,
44 teacher_in_charge_name: "admin".to_string(),
45 teacher_in_charge_email: "admin@example.com".to_string(),
46 opening_time: None,
47 closing_time: None,
48 instance_id: Some(cx.v5(b"687a2c17-7cca-4d4e-8ad5-bec24415e754")),
49 })
50 .role(teacher_user_id, UserRole::Teacher)
51 .module(ModuleBuilder::new().order(0).chapter(
52 ChapterBuilder::new(1, "Chapter 1").fixed_ids(
53 cx.v5(b"eb7ecf0d-24eb-485c-89de-0a961097741f"),
54 cx.v5(b"bdbe05b8-59cf-496a-a55b-ec3b4b6241ea"),
55 ),
56 ))
57 .module(
58 ModuleBuilder::new()
59 .order(1)
60 .name("Another module")
61 .uh_course_code("TEST002".to_string())
62 .chapter(ChapterBuilder::new(2, "Chapter 2").fixed_ids(
63 cx.v5(b"57c85452-d8bd-44e5-a3d0-bc09a4492028"),
64 cx.v5(b"48977307-c0a0-46f5-b74d-5b6b3c3eeb7c"),
65 )),
66 );
67
68 let (course, _default_instance, _last_module) = course.seed(&mut conn, &cx).await?;
69
70 Ok(course.id)
71}