"""Lambda generate_report function module.""" from typing import Any from uuid import UUID import pydantic from common.connectors import ows_product_staging_obo, s3 from common.schemas.s3_event import S3Event from lambdacommon.common_config import logger def handle(*, bulk_session_id: UUID, identity_uuid: UUID) -> None: """Handle marking OWS products as failed for a given bulk session ID.""" ows_product_staging_obo.update_metadata_status( bulk_session_id, "failure", impersonated_identity_uuid=str(identity_uuid), ) def handler(event: dict[str, Any], context: Any) -> dict[str, Any]: """Lambda entry point.""" try: s3_event: S3Event = S3Event.model_validate(event) metadata: dict[str, str] = s3.get_object_metadata(s3_event.to_reference()) bulk_session_id = UUID(metadata["bulk_session_id"]) identity_uuid = UUID(metadata["identity_uuid"]) handle(bulk_session_id=bulk_session_id, identity_uuid=identity_uuid) return event except pydantic.ValidationError: logger.exception("Invalid payload received") return {"status": "INVALID_EVENT"} except ValueError as error: return {"status": str(error)}