tape: implement destroy_media

This commit is contained in:
Dietmar Maurer
2020-12-14 08:58:40 +01:00
parent fba0b77469
commit fb657d8ee5
4 changed files with 81 additions and 3 deletions

View File

@ -251,6 +251,16 @@ impl Inventory {
Ok(())
}
/// Remove a single media persistently
pub fn remove_media(&mut self, uuid: &Uuid) -> Result<(), Error> {
let _lock = self.lock()?;
self.map = Self::load_media_db(&self.inventory_path)?;
self.map.remove(uuid);
self.update_helpers();
self.replace_file()?;
Ok(())
}
/// Lookup media
pub fn lookup_media(&self, uuid: &Uuid) -> Option<&MediaId> {
self.map.get(uuid)

View File

@ -201,6 +201,14 @@ impl MediaStateDatabase {
self.store()
}
/// Lock database, reload database, remove media, store database
pub fn remove_media(&mut self, uuid: &Uuid) -> Result<(), Error> {
let _lock = self.lock()?;
self.map = Self::load_media_db(&self.database_path)?;
self.map.remove(uuid);
self.store()
}
fn store(&self) -> Result<(), Error> {
let mut list = Vec::new();