Class: Dynamoid::AdapterPlugin::AwsSdkV3::ItemUpdater

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamoid/adapter_plugin/aws_sdk_v3.rb

Overview

Mimics behavior of the yielded object on DynamoDB’s update_item API (high level).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(table, key, range_key = nil) ⇒ ItemUpdater

Returns a new instance of ItemUpdater.



927
928
929
930
931
932
933
934
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 927

def initialize(table, key, range_key = nil)
  @table = table
  @key = key
  @range_key = range_key
  @additions = {}
  @deletions = {}
  @updates   = {}
end

Instance Attribute Details

#keyObject (readonly)

Returns the value of attribute key.



925
926
927
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 925

def key
  @key
end

#range_keyObject (readonly)

Returns the value of attribute range_key.



925
926
927
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 925

def range_key
  @range_key
end

#tableObject (readonly)

Returns the value of attribute table.



925
926
927
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 925

def table
  @table
end

Instance Method Details

#add(values) ⇒ Object

Adds the given values to the values already stored in the corresponding columns. The column must contain a Set or a number.

Parameters:

  • vals (Hash)

    keys of the hash are the columns to update, vals are the values to add. values must be a Set, Array, or Numeric



943
944
945
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 943

def add(values)
  @additions.merge!(sanitize_attributes(values))
end

#delete(values) ⇒ Object

Removes values from the sets of the given columns

Parameters:

  • values (Hash)

    keys of the hash are the columns, values are Arrays/Sets of items to remove



953
954
955
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 953

def delete(values)
  @deletions.merge!(sanitize_attributes(values))
end

#set(values) ⇒ Object

Replaces the values of one or more attributes



960
961
962
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 960

def set(values)
  @updates.merge!(sanitize_attributes(values))
end

#to_hObject

Returns an AttributeUpdates hash suitable for passing to the V2 Client API



967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v3.rb', line 967

def to_h
  ret = {}

  @additions.each do |k, v|
    ret[k.to_s] = {
      action: ADD,
      value: v
    }
  end
  @deletions.each do |k, v|
    ret[k.to_s] = {
      action: DELETE,
      value: v
    }
  end
  @updates.each do |k, v|
    ret[k.to_s] = {
      action: PUT,
      value: v
    }
  end

  ret
end