def update_one_item()

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'])