use std::path::Path;
use anyhow::Result;
use super::persistence::{load_session, save_session};
pub fn set_session_phase(cache_dir: &Path, phase: u8) -> Result<()> {
let mut session = match load_session(cache_dir)? {
Some(session) => session,
None => {
log::debug!("No session to update phase for");
return Ok(());
}
};
let now = crate::timeutil::now_utc_rfc3339_or_fallback();
session.set_phase(phase, now);
save_session(cache_dir, &session)
}
pub fn mark_session_iteration_complete(cache_dir: &Path) -> Result<()> {
let mut session = match load_session(cache_dir)? {
Some(session) => session,
None => {
log::debug!("No session to mark iteration complete for");
return Ok(());
}
};
let now = crate::timeutil::now_utc_rfc3339_or_fallback();
session.mark_iteration_complete(now);
save_session(cache_dir, &session)
}
pub fn increment_session_progress(cache_dir: &Path) -> Result<()> {
let mut session = match load_session(cache_dir)? {
Some(session) => session,
None => {
log::debug!("No session to increment progress for");
return Ok(());
}
};
let now = crate::timeutil::now_utc_rfc3339_or_fallback();
session.mark_task_complete(now);
save_session(cache_dir, &session)
}