Skip to main content

headless_lms_server/programs/seed/seed_courses/
seed_metadata_course.rs

1use 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_metadata_course(
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 metadata course {}", course_name);
36
37    let course = CourseBuilder::new(course_name, course_slug)
38        .desc("Course for testing jsonld metadata.")
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"b3140dd4-1461-438d-8f38-c19209a35bd8")),
49        })
50        .role(teacher_user_id, UserRole::Teacher)
51        .module(
52            ModuleBuilder::new()
53                .order(0)
54                .uh_course_code("TEST001".to_string())
55                .chapter(ChapterBuilder::new(1, "Chapter 1").fixed_ids(
56                    cx.v5(b"6665d568-b8d6-4040-8a41-852777f7fc80"),
57                    cx.v5(b"9fba5a6a-a090-450e-b0a4-6eebf2e98d22"),
58                )),
59        );
60
61    let (course, _default_instance, _last_module) = course.seed(&mut conn, &cx).await?;
62
63    Ok(course.id)
64}