headless_lms_server/programs/seed/builder/mod.rs
1//! Builder pattern API for creating course seed data declaratively.
2//!
3//! # Usage
4//!
5//! ```rust
6//! use chrono::Utc;
7//! use sqlx::Connection;
8//! use headless_lms_server::programs::seed::builder::{
9//! course::CourseBuilder,
10//! module::ModuleBuilder,
11//! chapter::ChapterBuilder,
12//! page::PageBuilder,
13//! context::SeedContext,
14//! };
15//!
16//! # async fn example() -> anyhow::Result<()> {
17//! # let mut conn = sqlx::PgConnection::connect("postgresql://").await?;
18//! # let teacher = uuid::Uuid::new_v4();
19//! # let org = uuid::Uuid::new_v4();
20//! # let base_course_ns = uuid::Uuid::new_v4();
21//! # let mut context = SeedContext { conn: &mut conn, teacher, org, base_course_ns };
22//! let course = CourseBuilder::new("My Course", "my-course")
23//! .desc("A sample course")
24//! .chatbot(true)
25//! .module(
26//! ModuleBuilder::new()
27//! .order(0)
28//! .name("Introduction")
29//! .ects(5.0)
30//! .chapter(
31//! ChapterBuilder::new(1, "Getting Started")
32//! .opens(Utc::now())
33//! .page(PageBuilder::new("/intro", "Introduction Page"))
34//! )
35//! );
36//!
37//! let (course, instance, module) = course.seed(&mut context).await?;
38//! # Ok(())
39//! # }
40//! ```
41
42pub mod chapter;
43pub mod context;
44pub mod course;
45pub mod exercise;
46pub mod id;
47pub mod json_source;
48pub mod module;
49pub mod page;