Skip to main content

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_base::config::ApplicationConfiguration;
9//!
10//! use headless_lms_server::programs::seed::builder::{
11//!     course::CourseBuilder,
12//!     module::ModuleBuilder,
13//!     chapter::ChapterBuilder,
14//!     page::PageBuilder,
15//!     context::SeedContext,
16//! };
17//!
18//! # async fn example() -> anyhow::Result<()> {
19//! # let mut conn = sqlx::PgConnection::connect("postgresql://").await?;
20//! # let app_config = ApplicationConfiguration::try_from_env()?;
21//! # let teacher = uuid::Uuid::new_v4();
22//! # let org = uuid::Uuid::new_v4();
23//! # let base_course_ns = uuid::Uuid::new_v4();
24//! # let mut context = SeedContext { teacher, org, base_course_ns };
25//! let course = CourseBuilder::new("My Course", "my-course")
26//!     .desc("A sample course")
27//!     .chatbot(true)
28//!     .module(
29//!         ModuleBuilder::new()
30//!             .order(0)
31//!             .name("Introduction")
32//!             .ects(5.0)
33//!             .chapter(
34//!                 ChapterBuilder::new(1, "Getting Started")
35//!                     .opens(Utc::now())
36//!                     .page(PageBuilder::new("/intro", "Introduction Page"))
37//!             )
38//!     );
39//!
40//! let (course, instance, module) = course.seed(&mut conn, &app_config, &context).await?;
41//! # Ok(())
42//! # }
43//! ```
44
45pub mod certificate;
46pub mod chapter;
47pub mod context;
48pub mod course;
49pub mod exercise;
50pub mod id;
51pub mod json_source;
52pub mod module;
53pub mod page;