update

in lib/aws-record/record/item_operations.rb [538:563]


        def update(opts)
          key = {}
          updates = {}
          @keys.keys.each_value do |attr_sym|
            unless value = opts.delete(attr_sym)
              raise Errors::KeyMissing.new(
                "Missing required key #{attr_sym} in #{opts}"
              )
            end
            attr_name = attributes.storage_name_for(attr_sym)
            key[attr_name] = attributes.attribute_for(attr_sym).serialize(value)
          end
          request_opts = {
            table_name: table_name,
            key: key
          }
          update_tuple = _build_update_expression(opts)
          unless update_tuple.nil?
            uex, exp_attr_names, exp_attr_values = update_tuple
            request_opts[:update_expression] = uex
            request_opts[:expression_attribute_names] = exp_attr_names
            request_opts[:expression_attribute_values] = exp_attr_values unless exp_attr_values.empty?
          end
          dynamodb_client.update_item(request_opts)
        end