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}