def get_item_ddb()

in lambda/src/data_access/ddb_util.py [0:0]


def get_item_ddb(table_name, ddb_client=None, **kwargs):
    if ddb_client is not None:
        table = ddb_client.Table(table_name)
        logger.info('getting ddb data using ddb client override')
    else:
        table = dynamodb.Table(table_name)

    try:
        valid_args = ['Key', 'AttributesToGet', 'ProjectionExpression']
        response = table.get_item(**{k: v for k, v in kwargs.items() if k in valid_args})
    except ClientError as e:
        logger.error('Error querying %s DDB table', table_name, exc_info=True)
        raise e
    else:
        if 'Item' not in response:
            return None
        item = response['Item']
        logger.info('Success querying %s DDB table. Found item', table_name)
        logger.debug('item %s', json.dumps(item, cls=DecimalEncoder))
        return item