use super::manager::{ManagedError, SessionManager};
use super::prune::is_running;
use super::record::{ManagedSessionId, SessionRecord};
impl SessionManager {
pub async fn delete_record(
&self,
id: &ManagedSessionId,
force: bool,
) -> Result<SessionRecord, ManagedError> {
let record = self.get(id).await?;
if !force && is_running(&record.state) {
return Err(ManagedError::InvalidState(
id.to_string(),
format!(
"session is {} — stop it first with `tm session stop {id}` \
(or `tm session decommission {id}`), or pass --force to \
delete the record anyway",
record.state
),
));
}
self.compact_record(id).await?;
Ok(record)
}
}