in parquet_flask/aws/aws_ddb.py [0:0]
def update_one_item(self, update_expression, expression_names, expression_vals, hash_val, range_val=None, retrieve_new_val=True):
"""
Usage : increment or decrement
ddb.update_one_item('SET #created_at_key = #created_at_key + :created_at_val', {'#created_at_key': 'created_at'}, {':created_at_val': -50}, '61725b56-3016-42c6-9006-c0b5d9017fee')
:param update_expression: str - example: add #created_key = :created_val
:param expression_names: dict - {'#created_key': 'created_at'}
:param expression_vals: dict - {':created_val': 123}
:param hash_val: str
:param range_val: str
:return:
"""
LOGGER.info('updating one item from DDB using they key')
query_key = {self.__props.hash_key: hash_val}
if range_val is not None and self.__props.range_key is not None:
query_key[self.__props.range_key] = range_val
item_result = self._ddb_resource.Table(self.__props.tbl_name).update_item(
Key=query_key,
UpdateExpression=update_expression,
ExpressionAttributeNames=expression_names,
ExpressionAttributeValues=expression_vals,
ReturnValues='ALL_NEW' if retrieve_new_val is True else 'ALL_OLD'
)
if 'Attributes' not in item_result:
return None
return self._replace_decimals(item_result['Attributes'])