summaryrefslogtreecommitdiff
path: root/src/updater.rs
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2026-02-09 17:56:23 +0100
committerJesper Jensen <jesper@jnsn.dev>2026-02-09 17:56:23 +0100
commit8254289c4f4ab69e23dedb51976e2632b757afc4 (patch)
tree017f1e487cd6cbbbb91056dfb4e25ba8fb4208b5 /src/updater.rs
parent284165f2000ec9ad5ac0c47128ce12eae1c734ef (diff)
Same database pattern for images
Diffstat (limited to 'src/updater.rs')
-rw-r--r--src/updater.rs46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/updater.rs b/src/updater.rs
index 7ab6483..b9dc555 100644
--- a/src/updater.rs
+++ b/src/updater.rs
@@ -34,14 +34,14 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
let image_record = match db.get_image(registry, image_name) {
Some(x) => x,
None => {
- let mut new_image = Image {
+ let mut new_images = [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
+ }];
+ db.insert_images(&mut new_images);
+ new_images[0].clone()
},
};
@@ -52,7 +52,7 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
}
// Refresh all expired images in the database
- for expired in db.get_expired_images(now) {
+ for mut expired in db.get_expired_images(now) {
let cache_max_age = reg.get_cache_ttl(&expired.registry);
let cached_tags = db.get_tags_sorted(expired.id);
@@ -78,12 +78,12 @@ pub fn update_images(now: &DateTime<Utc>, db: &dyn Db, reg: &dyn Registries, fil
}
db.delete_tags(&to_delete);
db.insert_tags(&mut to_insert);
- let new_expires_at = *now + cache_max_age;
- db.set_expires_at(expired.id, &new_expires_at);
+ expired.expires_at = *now + cache_max_age;
+ db.update_images(&[expired]);
}
None => {
- let new_expires_at = *now + cache_max_age;
- db.set_expires_at(expired.id, &new_expires_at);
+ expired.expires_at = *now + cache_max_age;
+ db.update_images(&[expired]);
}
}
}
@@ -215,11 +215,11 @@ mod tests {
]);
let past_expiry = now - chrono::Duration::days(1);
- let mut img = Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: past_expiry };
- db.insert_image(&mut img);
+ let mut images = [Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: past_expiry }];
+ db.insert_images(&mut images);
db.insert_tags(&mut [
- Tag { id: 0, image_id: img.id, tag: "1.20".into(), digest: None },
- Tag { id: 0, image_id: img.id, tag: "1.21".into(), digest: None },
+ Tag { id: 0, image_id: images[0].id, tag: "1.20".into(), digest: None },
+ Tag { id: 0, image_id: images[0].id, tag: "1.21".into(), digest: None },
]);
let files = vec![FileInput {
@@ -230,7 +230,7 @@ mod tests {
let mut outcomes = vec![];
update_images(&now, &db, &reg, &files, &mut outcomes);
- let tags: Vec<String> = db.get_tags_sorted(img.id).into_iter().map(|t| t.tag).collect();
+ let tags: Vec<String> = db.get_tags_sorted(images[0].id).into_iter().map(|t| t.tag).collect();
assert_eq!(tags, vec!["1.21", "1.22"]);
let got = db.get_image("registry.hub.docker.com", "nginx").unwrap();
assert!(got.expires_at > now);
@@ -244,9 +244,9 @@ mod tests {
let reg = StubRegistry::new(vec![]);
let future_expiry = now + chrono::Duration::minutes(30);
- 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_tags(&mut [Tag { id: 0, image_id: img.id, tag: "1.21".into(), digest: None }]);
+ let mut images = [Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: future_expiry }];
+ db.insert_images(&mut images);
+ db.insert_tags(&mut [Tag { id: 0, image_id: images[0].id, tag: "1.21".into(), digest: None }]);
let files = vec![FileInput {
path: "/test".into(),
@@ -352,9 +352,9 @@ mod tests {
let reg = StubRegistry::new(vec![]);
let future_expiry = now + chrono::Duration::minutes(30);
- 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_tags(&mut [Tag { id: 0, image_id: img.id, tag: "1.21".into(), digest: Some("sha256:0000000000000000000000000000000000000000000000000000000000000003".into()) }]);
+ let mut images = [Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: future_expiry }];
+ db.insert_images(&mut images);
+ db.insert_tags(&mut [Tag { id: 0, image_id: images[0].id, tag: "1.21".into(), digest: Some("sha256:0000000000000000000000000000000000000000000000000000000000000003".into()) }]);
let files = vec![FileInput {
path: "/test".into(),
@@ -585,9 +585,9 @@ mod tests {
]);
let past_expiry = now - chrono::Duration::days(1);
- 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_tags(&mut [Tag { id: 0, image_id: img.id, tag: "1.21".into(), digest: Some("sha256:0000000000000000000000000000000000000000000000000000000000000003".into()) }]);
+ let mut images = [Image { id: 0, registry: "registry.hub.docker.com".into(), image: "nginx".into(), expires_at: past_expiry }];
+ db.insert_images(&mut images);
+ db.insert_tags(&mut [Tag { id: 0, image_id: images[0].id, tag: "1.21".into(), digest: Some("sha256:0000000000000000000000000000000000000000000000000000000000000003".into()) }]);
let files = vec![FileInput {
path: "/test".into(),