From 98bc282c32be52442ff2cf14e7159926e81883f8 Mon Sep 17 00:00:00 2001 From: davidemazzocchi Date: Fri, 27 Feb 2026 11:43:38 +0100 Subject: [PATCH] fix: make catalog.delete coherent with other methods propagating errors --- 01.workspace/heave/src/imp/catalog_delete.rs | 6 +++--- 01.workspace/heave/src/tst/catalog_delete.rs | 4 ++-- 01.workspace/heave/src/tst/catalog_integration.rs | 2 +- 01.workspace/heave/src/tst/catalog_persist.rs | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/01.workspace/heave/src/imp/catalog_delete.rs b/01.workspace/heave/src/imp/catalog_delete.rs index 31e1264..90d96d2 100644 --- a/01.workspace/heave/src/imp/catalog_delete.rs +++ b/01.workspace/heave/src/imp/catalog_delete.rs @@ -16,13 +16,13 @@ impl Catalog { /// # Arguments /// /// * `id` - The ID of the entity to mark for deletion. - pub fn delete(&self, id: &str) { - let _ = self.on_items(|items| { + pub fn delete(&self, id: &str) -> Result<(), FailedTo> { + self.on_items(|items| { let entity = items.get_mut(id); if let Some(entity) = entity { entity.state = EntityState::ToDelete; } Ok(()) - }); + }) } } diff --git a/01.workspace/heave/src/tst/catalog_delete.rs b/01.workspace/heave/src/tst/catalog_delete.rs index 7afb7b1..3ddfe85 100644 --- a/01.workspace/heave/src/tst/catalog_delete.rs +++ b/01.workspace/heave/src/tst/catalog_delete.rs @@ -15,7 +15,7 @@ mod tests { }; let item_id = item.id.clone(); let _ = catalog.upsert(item); - catalog.delete(&item_id); + catalog.delete(&item_id).unwrap(); let is_deleted = catalog .with_items(|items| { let entity = items.get(&item_id).unwrap(); @@ -38,7 +38,7 @@ mod tests { }; let _ = catalog.upsert(item); // Attempt to delete a non-existent entity, which should not panic or change anything. - catalog.delete("nonexistent-id"); + catalog.delete("nonexistent-id").unwrap(); let not_deleted = catalog .with_items(|items| { let entity = items.get("item-123").unwrap(); diff --git a/01.workspace/heave/src/tst/catalog_integration.rs b/01.workspace/heave/src/tst/catalog_integration.rs index 9c80e60..c6fb4e0 100644 --- a/01.workspace/heave/src/tst/catalog_integration.rs +++ b/01.workspace/heave/src/tst/catalog_integration.rs @@ -112,7 +112,7 @@ mod tests { catalog2.load_by_id("item-to-delete").unwrap(); assert!(catalog2.get::("item-to-delete").unwrap().is_some()); // 3. 'delete' -> 'persist' - catalog2.delete("item-to-delete"); + catalog2.delete("item-to-delete").unwrap(); catalog2.persist().unwrap(); // 4. 'load_by_id' should now return nothing let catalog3 = Catalog::new(db_path); diff --git a/01.workspace/heave/src/tst/catalog_persist.rs b/01.workspace/heave/src/tst/catalog_persist.rs index 270df5d..b0ce869 100644 --- a/01.workspace/heave/src/tst/catalog_persist.rs +++ b/01.workspace/heave/src/tst/catalog_persist.rs @@ -56,7 +56,7 @@ mod tests { let _ = catalog1.upsert(item1.clone()); assert!(catalog1.persist().is_ok()); // 2. Mark the item for deletion and persist again. - catalog1.delete(&item1.id); + catalog1.delete(&item1.id).unwrap(); assert!(catalog1.persist().is_ok()); // 3. Create a new catalog and try to load the deleted item. let catalog2 = Catalog::new(db_path); @@ -191,7 +191,7 @@ mod tests { }; let _ = catalog_ops.upsert(item_to_update_new.clone()); // State: Updated // An item to be deleted. - catalog_ops.delete("delete-me"); // State: ToDelete + catalog_ops.delete("delete-me").unwrap(); // State: ToDelete // item_to_keep is left untouched (State: Synced after load) // 3. Execution: Persist all the changes in one go. catalog_ops.persist().unwrap(); @@ -320,7 +320,7 @@ mod tests { }; let _ = catalog.upsert(item_updated.clone()); // State: Updated // An item to be deleted. - catalog.delete("delete-me"); // State: ToDelete + catalog.delete("delete-me").unwrap(); // State: ToDelete // 'item_untouched' remains with state `Loaded`. // Check states before final persist assert_eq!(