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;