fix: make catalog.delete coherent with other methods propagating errors
This commit is contained in:
@@ -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(())
|
||||
});
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -112,7 +112,7 @@ mod tests {
|
||||
catalog2.load_by_id("item-to-delete").unwrap();
|
||||
assert!(catalog2.get::<Item>("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);
|
||||
|
||||
@@ -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!(
|
||||
|
||||
Reference in New Issue
Block a user