headless_lms_server/programs/seed/seed_courses/
seed_generated_description.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_base::config::ApplicationConfiguration;
8use headless_lms_models::roles::UserRole;
9use tracing::info;
10use uuid::Uuid;
11
12pub async fn seed_generated_description(
13 app_config: &ApplicationConfiguration,
14 course_id: Uuid,
15 course_name: &str,
16 course_slug: &str,
17 common_course_data: CommonCourseData,
18) -> Result<Uuid> {
19 let CommonCourseData {
20 db_pool,
21 organization_id: org,
22 teacher_user_id,
23 student_user_id: _student,
24 langs_user_id: _langs_user_id,
25 example_normal_user_ids: _users,
26 jwt_key: _jwt_key,
27 base_url: _base_url,
28 } = common_course_data;
29
30 let mut conn = db_pool.acquire().await?;
31 let cx = SeedContext {
32 teacher: teacher_user_id,
33 org,
34 base_course_ns: course_id,
35 };
36
37 info!("inserting description generation course {}", course_name);
38
39 let course = CourseBuilder::new(course_name, course_slug)
40 .desc("Course for testing description generation with LLM.")
41 .course_id(course_id)
42 .instance(CourseInstanceConfig {
43 name: None,
44 description: None,
45 support_email: None,
46 teacher_in_charge_name: "admin".to_string(),
47 teacher_in_charge_email: "admin@example.com".to_string(),
48 opening_time: None,
49 closing_time: None,
50 instance_id: Some(cx.v5(b"7344f1c8-b7ce-4c7d-ade2-5f39997bd454")),
51 })
52 .role(teacher_user_id, UserRole::Teacher)
53 .module(
54 ModuleBuilder::new()
55 .order(0)
56 .uh_course_code("TEST001".to_string())
57 .chapter(ChapterBuilder::new(1, "Chapter 1").fixed_ids(
58 cx.v5(b"71f85e9a-bf0e-4062-9212-6b05a425a018"),
59 cx.v5(b"f808c4a7-0bde-4347-b8c3-0f2e32ffe85a"),
60 )),
61 );
62
63 let (course, _default_instance, _last_module) = course.seed(&mut conn, app_config, &cx).await?;
64
65 Ok(course.id)
66}