Skip to main content

bamboo_server/app_state/
persistence.rs

1use super::*;
2
3impl AppState {
4    /// Save a complete session to persistent storage.
5    ///
6    /// Uses [`bamboo_infrastructure::LockedSessionStore::merge_save_runtime`]
7    /// so any concurrent UI edits to the authoritative metadata group (`title`,
8    /// `title_version`, `pinned`, `metadata_version`) are preserved when our
9    /// runtime-side `metadata_version` does not strictly exceed disk's.
10    ///
11    /// # Arguments
12    ///
13    /// * `session` - Session object to save (mutated in-place to reflect the
14    ///   merged authoritative metadata values).
15    pub async fn save_session(&self, session: &mut bamboo_agent_core::Session) {
16        if let Err(error) = self.persistence.merge_save_runtime(session).await {
17            tracing::warn!("[{}] Failed to save session: {}", session.id, error);
18        }
19    }
20}