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.



692
693
694
695
696
697
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 692

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.



690
691
692
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 690

def key
  @key
end

#range_keyObject (readonly)

Returns the value of attribute range_key.



690
691
692
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 690

def range_key
  @range_key
end

#tableObject (readonly)

Returns the value of attribute table.



690
691
692
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 690

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



706
707
708
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 706

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



716
717
718
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 716

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

#set(values) ⇒ Object

Replaces the values of one or more attributes



723
724
725
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 723

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

#to_hObject

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



730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 730

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