def query_item_ddb()

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


def query_item_ddb(table_name, ddb_client=None, **kwargs):
    if ddb_client is not None:
        table = ddb_client.Table(table_name)
        logger.info('querying ddb using ddb client override')
    else:
        table = dynamodb.Table(table_name)
    try:
        response = table.query(**kwargs)
        for i, item in enumerate(response["Items"]):
            logger.debug(f'item {i}: {json.dumps(item, cls=DecimalEncoder)}')
        result = response['Items']

        while 'LastEvaluatedKey' in response:
            response = table.query(ExclusiveStartKey=response['LastEvaluatedKey'], **kwargs)
            logger.info(f'DDBQuery: Found {len(response["Items"])} items in next page.')
            result.extend(response['Items'])
        return result
    except ClientError as e:
        logger.error(f'Error querying {table_name} DDB table', exc_info=True)
        raise e