diff --git a/crates/bds-core/src/engine/mod.rs b/crates/bds-core/src/engine/mod.rs index 9f49356..adb5f09 100644 --- a/crates/bds-core/src/engine/mod.rs +++ b/crates/bds-core/src/engine/mod.rs @@ -6,7 +6,9 @@ pub mod tag; pub mod post; pub mod media; pub mod post_media; +pub mod template; pub mod template_rebuild; +pub mod script; pub mod script_rebuild; pub mod task; pub mod metadata_diff; diff --git a/crates/bds-core/src/engine/script.rs b/crates/bds-core/src/engine/script.rs new file mode 100644 index 0000000..144ebee --- /dev/null +++ b/crates/bds-core/src/engine/script.rs @@ -0,0 +1,431 @@ +use std::fs; +use std::path::Path; + +use rusqlite::Connection; +use uuid::Uuid; + +use crate::db::queries::script as qs; +use crate::engine::{EngineError, EngineResult}; +use crate::model::{Script, ScriptKind, ScriptStatus}; +use crate::util::frontmatter::{write_script_file, ScriptFrontmatter}; +use crate::util::{atomic_write_str, ensure_unique, now_unix_ms, slugify}; + +/// Create a new draft script. Content stored in DB, no file written. +pub fn create_script( + conn: &Connection, + project_id: &str, + title: &str, + kind: ScriptKind, + content: &str, + entrypoint: Option<&str>, +) -> EngineResult