diff options
Diffstat (limited to 'src/db.rs')
| -rw-r--r-- | src/db.rs | 15 |
1 files changed, 8 insertions, 7 deletions
@@ -26,7 +26,7 @@ pub trait Db { fn get_tags_sorted(&self, image_id: i64) -> Vec<Tag>; 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<i64> = 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<String> = db.get_tags_sorted(images[0].id).into_iter().map(|t| t.tag).collect(); assert_eq!(result, vec!["2.0"]); } |
