canic_core/workflow/
app.rs

1use crate::{
2    Error,
3    dto::state::AppCommand,
4    ops::{runtime::env::EnvOps, storage::state::AppStateOps},
5    workflow::{cascade::state::root_cascade_state, snapshot::StateSnapshotBuilder},
6};
7
8///
9/// AppStateOrchestrator
10///
11
12pub struct AppStateOrchestrator;
13
14impl AppStateOrchestrator {
15    pub async fn apply_command(cmd: AppCommand) -> Result<(), Error> {
16        EnvOps::require_root()?;
17        AppStateOps::command(cmd)?;
18
19        let snapshot = StateSnapshotBuilder::new().with_app_state().build();
20        root_cascade_state(&snapshot).await?;
21
22        Ok(())
23    }
24}