summaryrefslogtreecommitdiff
path: root/src/updater.rs
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2026-02-08 17:21:34 +0100
committerJesper Jensen <jesper@jnsn.dev>2026-02-08 18:23:18 +0100
commit047a4387efdd097f949bd2cfdb79f6e5425dc931 (patch)
tree0f0a4830bd16886364a3b68159defc8455df79a6 /src/updater.rs
parent0fd24af76e57a946129f7f9943cb61771e00c1b3 (diff)
Add struct to represent image row
Diffstat (limited to 'src/updater.rs')
-rw-r--r--src/updater.rs51
1 files changed, 30 insertions, 21 deletions
diff --git a/src/updater.rs b/src/updater.rs
index e407a2f..9f6c7df 100644
--- a/src/updater.rs
+++ b/src/updater.rs
@@ -1,6 +1,6 @@
use crate::version::{VersionPattern, CompareOutcome};
use crate::docker::DockerRef;
-use crate::db::Db;
+use crate::db::{Db, Image};
use crate::registry::Registries;
use crate::metrics;
use chrono::{DateTime, Utc};
@@ -34,11 +34,16 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
let image_name = &file.content[img.image.clone()];
let (image_id, expires_at) = match db.get_image(registry, image_name) {
- Some(x) => x,
+ Some(img) => (img.id, img.expires_at),
None => {
- let epoch = DateTime::<Utc>::UNIX_EPOCH;
- let id = db.insert_image(registry, image_name, &epoch);
- (id, epoch)
+ let mut new_image = Image {
+ id: 0,
+ registry: registry.to_string(),
+ image: image_name.to_string(),
+ expires_at: DateTime::<Utc>::UNIX_EPOCH,
+ };
+ db.insert_image(&mut new_image);
+ (new_image.id, new_image.expires_at)
},
};
@@ -230,9 +235,10 @@ mod tests {
let reg = StubRegistry::default();
let past_expiry = now - chrono::Duration::days(1);
- let id = db.insert_image("registry.hub.docker.com", "nginx", &past_expiry);
- db.insert_tag(id, "1.20", &past_expiry);
- db.insert_tag(id, "1.21", &past_expiry);
+ let mut img = Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: past_expiry };
+ db.insert_image(&mut img);
+ db.insert_tag(img.id, "1.20", &past_expiry);
+ db.insert_tag(img.id, "1.21", &past_expiry);
reg.add_tag("registry.hub.docker.com", "nginx", "1.21", "sha256:0000000000000000000000000000000000000000000000000000000000000001");
reg.add_tag("registry.hub.docker.com", "nginx", "1.22", "sha256:0000000000000000000000000000000000000000000000000000000000000002");
@@ -244,9 +250,9 @@ mod tests {
let mut outcomes = vec![];
update_images(&now, &db, &reg, &files, &mut outcomes);
- assert_eq!(db.get_tags_sorted(id), vec!["1.21", "1.22"]);
- let (_, expires_at) = db.get_image("registry.hub.docker.com", "nginx").unwrap();
- assert!(expires_at > now);
+ assert_eq!(db.get_tags_sorted(img.id), vec!["1.21", "1.22"]);
+ let got = db.get_image("registry.hub.docker.com", "nginx").unwrap();
+ assert!(got.expires_at > now);
}
#[test]
@@ -257,8 +263,9 @@ mod tests {
let reg = StubRegistry::default();
let future_expiry = now + chrono::Duration::minutes(30);
- let id = db.insert_image("registry.hub.docker.com", "nginx", &future_expiry);
- db.insert_tag(id, "1.21", &now);
+ let mut img = Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: future_expiry };
+ db.insert_image(&mut img);
+ db.insert_tag(img.id, "1.21", &now);
let files = vec![FileInput {
path: "/test".into(),
@@ -364,9 +371,10 @@ mod tests {
let reg = StubRegistry::default();
let future_expiry = now + chrono::Duration::minutes(30);
- let id = db.insert_image("registry.hub.docker.com", "nginx", &future_expiry);
- db.insert_tag(id, "1.21", &now);
- db.update_tag_digest(id, "1.21", "sha256:0000000000000000000000000000000000000000000000000000000000000003", &now);
+ let mut img = Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: future_expiry };
+ db.insert_image(&mut img);
+ db.insert_tag(img.id, "1.21", &now);
+ db.update_tag_digest(img.id, "1.21", "sha256:0000000000000000000000000000000000000000000000000000000000000003", &now);
let files = vec![FileInput {
path: "/test".into(),
@@ -486,8 +494,8 @@ mod tests {
assert!(outcomes[0].is_err());
assert!(outcomes[0].as_ref().unwrap_err().contains("image not found"));
- let (_, expires_at) = db.get_image("registry.hub.docker.com", "nginx").unwrap();
- assert!(expires_at > now);
+ let got = db.get_image("registry.hub.docker.com", "nginx").unwrap();
+ assert!(got.expires_at > now);
}
#[test]
@@ -596,9 +604,10 @@ mod tests {
let reg = StubRegistry::default();
let past_expiry = now - chrono::Duration::days(1);
- let id = db.insert_image("registry.hub.docker.com", "nginx", &past_expiry);
- db.insert_tag(id, "1.21", &past_expiry);
- db.update_tag_digest(id, "1.21", "sha256:0000000000000000000000000000000000000000000000000000000000000003", &past_expiry);
+ let mut img = Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: past_expiry };
+ db.insert_image(&mut img);
+ db.insert_tag(img.id, "1.21", &past_expiry);
+ db.update_tag_digest(img.id, "1.21", "sha256:0000000000000000000000000000000000000000000000000000000000000003", &past_expiry);
reg.add_tag("registry.hub.docker.com", "nginx", "1.21", "sha256:0000000000000000000000000000000000000000000000000000000000000005");