"""Catalog Ingestion Utils.""" from datetime import datetime from config import catalog_ingestion_session from ddex_ingester_common.constants.catalog_ingestion import ( PRODUCT_ENTITY_TYPE, SUCCESS, UPDATE_ACTION, ) from ddex_ingester_common.helpers.catalog_ingestion import ( CatalogIngestionAction, ) def save_catalog_ingestion_action( event: object, model: object, track_data: dict, action: str): """Save a track catalog ingestion action to S3.""" action_string = 'updated' if action == UPDATE_ACTION else 'created' message = ( f'Product with release_id {model.product_code} ' f'{action_string} successfully.') # If it's null, make it an empty dict. track_data = {} if not track_data else track_data catalog_ingestion_session.add( CatalogIngestionAction( # Need specification in the model state_machine_name=event.get('state_machine_name'), state_machine_execution_name=event.get('execution_name'), time_created=datetime.now().isoformat(), action=action, entity_type=PRODUCT_ENTITY_TYPE, result=SUCCESS, project_code=model.project_code, project_id=model.project_id, project_name=model.release_name, upc=model.upc, release_id=model.product_code, release_name=model.release_name, vendor_catalog_number=model.product_code, isrc=track_data.get('isrc'), tuid=track_data.get('tuid'), track_sequence_number=track_data.get('track_sequence_number'), track_volume_number=track_data.get('track_volume_number'), track_name=track_data.get('track_name'), message=message, ) ) catalog_ingestion_session.save()