Skip to content

Commit 3a87a25

Browse files
committed
Feedback
1 parent 3bbb55a commit 3a87a25

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/api/data_types/snapshots.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,29 @@ pub struct ImageMetadata {
3535
pub extra: HashMap<String, serde_json::Value>,
3636
}
3737

38+
const RESERVED_KEYS: &[&str] = &["image_file_name", "width", "height"];
39+
3840
impl Serialize for ImageMetadata {
3941
fn serialize<S: Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
40-
let mut map = serializer.serialize_map(Some(self.extra.len() + 3))?;
41-
42-
// Sidecar fields first (user-provided extras)
43-
for (key, value) in &self.extra {
44-
map.serialize_entry(key, value)?;
45-
}
46-
47-
// CLI-managed fields last — these always win
42+
let extra_count = self
43+
.extra
44+
.keys()
45+
.filter(|k| !RESERVED_KEYS.contains(&k.as_str()))
46+
.count();
47+
let mut map = serializer.serialize_map(Some(extra_count + 3))?;
48+
49+
// CLI-managed fields first
4850
map.serialize_entry("image_file_name", &self.image_file_name)?;
4951
map.serialize_entry("width", &self.width)?;
5052
map.serialize_entry("height", &self.height)?;
5153

54+
// User-provided sidecar fields, skipping any that conflict with CLI fields
55+
for (key, value) in &self.extra {
56+
if !RESERVED_KEYS.contains(&key.as_str()) {
57+
map.serialize_entry(key, value)?;
58+
}
59+
}
60+
5261
map.end()
5362
}
5463
}

0 commit comments

Comments
 (0)