mutant_lib/mutant/
remove_logic.rs

1use super::MutAnt;
2use crate::error::Error;
3use log::{debug, error, info, warn};
4
5/// Removes an item by user key, recycling its pads.
6pub(super) async fn delete_item(es: &MutAnt, key: &str) -> Result<(), Error> {
7    debug!("DeleteItem[{}]: Starting removal...", key);
8
9    match es.pad_manager.release_pads(key).await {
10        Ok(_) => {
11            debug!(
12                "DeleteItem[{}]: PadManager successfully released pads.",
13                key
14            );
15        }
16        Err(Error::KeyNotFound(_)) => {
17            warn!("DeleteItem[{}]: Key not found by PadManager.", key);
18            return Err(Error::KeyNotFound(key.to_string()));
19        }
20        Err(e) => {
21            error!(
22                "DeleteItem[{}]: Error releasing pads via PadManager: {}",
23                key, e
24            );
25            return Err(e);
26        }
27    }
28
29    debug!("DeleteItem[{}]: Saving updated master index...", key);
30    match es.save_master_index().await {
31        Ok(_) => {
32            debug!(
33                "DeleteItem[{}]: Successfully persisted master index removal.",
34                key
35            );
36        }
37        Err(e) => {
38            error!(
39                "DeleteItem[{}]: CRITICAL: Failed to persist master index removal: {}. State might be inconsistent.",
40                key, e
41            );
42            return Err(e);
43        }
44    }
45
46    info!("DeleteItem[{}]: Removal successful.", key);
47    Ok(())
48}