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



844
845
846
847
848
849
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 844

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.



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

def key
  @key
end

#range_keyObject (readonly)

Returns the value of attribute range_key.



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

def range_key
  @range_key
end

#tableObject (readonly)

Returns the value of attribute table.



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

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.



858
859
860
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 858

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

#delete(values) ⇒ Object

Removes values from the sets of the given columns



868
869
870
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 868

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

#set(values) ⇒ Object

Replaces the values of one or more attributes



875
876
877
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 875

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

#to_hObject

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



882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 882

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