From 22c7e9566c439e2134946611ccba81c7499ac62c Mon Sep 17 00:00:00 2001 From: Jesper Jensen Date: Mon, 9 Feb 2026 18:04:14 +0100 Subject: Take entire row to delete This will be useful if we need to do some locking at some point. It's just nice that the same thing is passed back every time --- src/db.rs | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/db.rs') diff --git a/src/db.rs b/src/db.rs index 263d88d..6a4d732 100644 --- a/src/db.rs +++ b/src/db.rs @@ -26,7 +26,7 @@ pub trait Db { fn get_tags_sorted(&self, image_id: i64) -> Vec; fn insert_tags(&self, tags: &mut [Tag]); - fn delete_tags(&self, tag_ids: &[i64]); + fn delete_tags(&self, tags: &[Tag]); fn update_tags(&self, tags: &[Tag]); } @@ -204,10 +204,10 @@ impl Db for SqliteDb { } } - fn delete_tags(&self, tag_ids: &[i64]) { + fn delete_tags(&self, tags: &[Tag]) { let _timer = crate::metrics::get().db_query_duration.start_timer(); - for id in tag_ids { - self.conn.execute("DELETE FROM tags WHERE id = ?1", (id,)).unwrap(); + for tag in tags { + self.conn.execute("DELETE FROM tags WHERE id = ?1", (tag.id,)).unwrap(); } } @@ -310,8 +310,9 @@ impl Db for StubDb { } } - fn delete_tags(&self, tag_ids: &[i64]) { - self.tags.borrow_mut().retain(|t| !tag_ids.contains(&t.id)); + fn delete_tags(&self, tags: &[Tag]) { + let ids: Vec = tags.iter().map(|t| t.id).collect(); + self.tags.borrow_mut().retain(|t| !ids.contains(&t.id)); } fn update_tags(&self, tags: &[Tag]) { @@ -384,7 +385,7 @@ mod tests { Tag { id: 0, image_id: images[0].id, tag: "2.0".into(), digest: None }, ]; db.insert_tags(&mut tags); - db.delete_tags(&[tags[0].id]); + db.delete_tags(&[tags[0].clone()]); let result: Vec = db.get_tags_sorted(images[0].id).into_iter().map(|t| t.tag).collect(); assert_eq!(result, vec!["2.0"]); } -- cgit v1.2.3