async def update_item(self, table_name, hash_key, range_key=None, actions=None, condition=None, return_consumed_capacity=None, return_item_collection_metrics=None, return_values=None): """ Performs the UpdateItem operation """ if not actions: raise ValueError("'actions' cannot be empty") operation_kwargs = await self.get_operation_kwargs( table_name=table_name, hash_key=hash_key, range_key=range_key, actions=actions, condition=condition, return_values=return_values, return_consumed_capacity=return_consumed_capacity, return_item_collection_metrics=return_item_collection_metrics) try: return await self.dispatch(UPDATE_ITEM, operation_kwargs) except BOTOCORE_EXCEPTIONS as e: raise UpdateError("Failed to update item: {}".format(e)) from e
def update_item(self, table_name, hash_key, range_key=None, attribute_updates=None, expected=None, return_consumed_capacity=None, conditional_operator=None, return_item_collection_metrics=None, return_values=None): """ Performs the UpdateItem operation """ operation_kwargs = {TABLE_NAME: table_name} operation_kwargs.update( self.get_identifier_map(table_name, hash_key, range_key)) if expected: operation_kwargs.update(self.get_expected_map( table_name, expected)) if return_consumed_capacity: operation_kwargs.update( self.get_consumed_capacity_map(return_consumed_capacity)) if return_item_collection_metrics: operation_kwargs.update( self.get_item_collection_map(return_item_collection_metrics)) if return_values: operation_kwargs.update(self.get_return_values_map(return_values)) if conditional_operator: operation_kwargs.update( self.get_conditional_operator(conditional_operator)) if not attribute_updates: raise ValueError("{0} cannot be empty".format(ATTR_UPDATES)) # {"path": {"Action": "PUT", "Value": "Foo"}} operation_kwargs[ATTR_UPDATES] = {} for key, update in attribute_updates.items(): value = update.get(VALUE) attr_type = self.get_attribute_type(table_name, key, value) value = self.parse_attribute(value) action = update.get(ACTION) if action not in ATTR_UPDATE_ACTIONS: raise ValueError("{0} must be one of {1}".format( ACTION, ATTR_UPDATE_ACTIONS)) operation_kwargs[ATTR_UPDATES][key] = { ACTION: action, VALUE: { attr_type: value } } try: return self.dispatch(UPDATE_ITEM, operation_kwargs) except BOTOCORE_EXCEPTIONS as e: raise UpdateError("Failed to update item: {0}".format(e))
def update_item(self, table_name, hash_key, range_key=None, actions=None, condition=None, return_consumed_capacity=None, return_item_collection_metrics=None, return_values=None): """ Performs the UpdateItem operation """ self._check_condition('condition', condition) operation_kwargs = {TABLE_NAME: table_name} operation_kwargs.update(self.get_identifier_map(table_name, hash_key, range_key)) name_placeholders = {} expression_attribute_values = {} if condition is not None: condition_expression = condition.serialize(name_placeholders, expression_attribute_values) operation_kwargs[CONDITION_EXPRESSION] = condition_expression if return_consumed_capacity: operation_kwargs.update(self.get_consumed_capacity_map(return_consumed_capacity)) if return_item_collection_metrics: operation_kwargs.update(self.get_item_collection_map(return_item_collection_metrics)) if return_values: operation_kwargs.update(self.get_return_values_map(return_values)) if not actions: raise ValueError("'actions' cannot be empty") update_expression = Update(*actions) operation_kwargs[UPDATE_EXPRESSION] = update_expression.serialize(name_placeholders, expression_attribute_values) if name_placeholders: operation_kwargs[EXPRESSION_ATTRIBUTE_NAMES] = self._reverse_dict(name_placeholders) if expression_attribute_values: operation_kwargs[EXPRESSION_ATTRIBUTE_VALUES] = expression_attribute_values try: return self.dispatch(UPDATE_ITEM, operation_kwargs) except BOTOCORE_EXCEPTIONS as e: raise UpdateError("Failed to update item: {}".format(e), e)