"""import-delivery-history.""" from ddex_ingester_common.logging import utils as logging_utils from lambdacommon.graphql import graphql import config from config import graphql_gateway from constants import queries logger = logging_utils.get_logger(config.app_logger) def handler(event, context): """Lambda entry point.""" upc = str(event.get('upc')) delivery_history = event.get('delivery_history') if not delivery_history: return True payload = parse_delivery_history(delivery_history, upc) try: graphql_gateway.execute( queries.import_delivery_history, {'data': {'deliveryHistory': payload}} ) except graphql.GraphQLError as err: raise Exception('Graphql error') from err except Exception as exp: raise Exception(f'Error importing delivery history.\n{exp}') from exp return True def parse_delivery_history(delivery_history, upc): """Parse delivery history. Example delivery history: "DeliveryHistory":"Spotify: 2020-11-21; iTunes: 2020-11-21" Args: delivery_history (str): Delivery history data upc (str): UPC Returns: list """ data = delivery_history.split(';') items = [] for i in data: store_name, date_delivered = i.strip().split(':') items.append( { 'storeId': config.STORES_MAPPING[store_name.strip()], 'dateDelivered': date_delivered.strip(), 'encoderId': config.SME_ENCODER_ID, 'upc': upc, } ) return items