"""Main Handler.""" from typing import Dict from bulk_metadata_ingester_common.models.bulk_release import BulkRelease from bulk_metadata_ingester_common.utils.jitter import jitter from bulk_metadata_ingester_common.utils.logging import get_current_logger from bulk_metadata_ingester_common.utils.release_utils import \ get_release_track_list import config from config import graphql_gateway from utils.set_default_data_utils import ( set_default_data ) def handler(event: Dict, context: object) -> Dict: """Lambda Entrypoint.""" if 'set_default_data' not in event: return event key = event.get('key') bucket = event.get('bucket') item_index = event.get('item_index') correlation_id = event.get('correlation_id') release = event.get('release', {}) tracks = event.get('tracks', {}) logger = get_current_logger( config.ENVIRONMENT, config.LAMBDA_NAME, logging_level=config.LOGGING_LEVEL, correlation_id=correlation_id) # Jitter calls - Sleep for randomness jitter(logger) graphql_gateway.set_headers( { 'Orchard-User-Id': config.OA_USER, 'Correlation-Id': correlation_id } ) # Log lambda begins message logger.info(f'set-default-data received: {event}') # Get release from JSON doc release_track_list = get_release_track_list(bucket, key, item_index) # Move JSON dict to model modeled_release = BulkRelease(json_release_rows=release_track_list) # Rehydrate context modeled_release.rehydrate(release, tracks) # Execute lambda logic modeled_release = set_data(event, modeled_release, logger) # Get all passed and updated fields updates = modeled_release.get_modified() # Return result result = { **event, 'release': { **updates['release'], }, 'tracks': { **updates['tracks'] } } return result def set_data( event: Dict, model: BulkRelease, logger: object) -> BulkRelease: """Process the model.""" # Log lambda begins message logger.info(f'set_data started with {model}"') model = set_default_data(event, model, logger) return model