diff --git a/src/deltaglider/core/models.py b/src/deltaglider/core/models.py index 09887da..ebce1f7 100644 --- a/src/deltaglider/core/models.py +++ b/src/deltaglider/core/models.py @@ -2,11 +2,13 @@ from dataclasses import dataclass from datetime import datetime +import logging # Metadata key prefix for DeltaGlider # AWS S3 automatically adds 'x-amz-meta-' prefix, so our keys become 'x-amz-meta-dg-*' METADATA_PREFIX = "dg-" +logger = logging.getLogger(__name__) @dataclass(frozen=True) class DeltaSpace: @@ -96,6 +98,12 @@ class DeltaMeta: @classmethod def from_dict(cls, data: dict[str, str]) -> "DeltaMeta": """Create from S3 metadata dict with DeltaGlider namespace prefix.""" + delta_cmd_key = f"{METADATA_PREFIX}delta-cmd" + delta_cmd_value = data.get(delta_cmd_key) + if delta_cmd_value is None: + object_name = data.get(f"{METADATA_PREFIX}original-name", "") + logger.warning("Delta metadata missing %s for %s; using empty command", delta_cmd_key, object_name) + delta_cmd_value = "" return cls( tool=data[f"{METADATA_PREFIX}tool"], original_name=data[f"{METADATA_PREFIX}original-name"], @@ -105,7 +113,7 @@ class DeltaMeta: ref_key=data[f"{METADATA_PREFIX}ref-key"], ref_sha256=data[f"{METADATA_PREFIX}ref-sha256"], delta_size=int(data[f"{METADATA_PREFIX}delta-size"]), - delta_cmd=data[f"{METADATA_PREFIX}delta-cmd"], + delta_cmd=delta_cmd_value, note=data.get(f"{METADATA_PREFIX}note"), )