Class: Dynamoid::AdapterPlugin::AwsSdkV2::ItemUpdater

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

Overview

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

Constant Summary collapse

ADD =
"ADD".freeze
DELETE =
"DELETE".freeze
PUT =
"PUT".freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of ItemUpdater.



818
819
820
821
822
823
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 818

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.



816
817
818
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 816

def key
  @key
end

#range_keyObject (readonly)

Returns the value of attribute range_key.



816
817
818
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 816

def range_key
  @range_key
end

#tableObject (readonly)

Returns the value of attribute table.



816
817
818
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 816

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



832
833
834
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 832

def add(values)
  @additions.merge!(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



842
843
844
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 842

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

#set(values) ⇒ Object

Replaces the values of one or more attributes



849
850
851
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 849

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

#to_hObject

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



856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 856

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