diff options
Diffstat (limited to 'src/updater.rs')
| -rw-r--r-- | src/updater.rs | 51 |
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, ®, &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"); |
