diff options
| author | Jesper Jensen <jesper@jnsn.dev> | 2026-02-09 18:04:14 +0100 |
|---|---|---|
| committer | Jesper Jensen <jesper@jnsn.dev> | 2026-02-09 18:04:14 +0100 |
| commit | 22c7e9566c439e2134946611ccba81c7499ac62c (patch) | |
| tree | 0455ca5573cc234f5f64715979896027b325947b /src/db.rs | |
| parent | 18dc559d0e45c43faa3ed9de8f343b16248aa9f4 (diff) | |
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
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"]); } |
