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.



971
972
973
974
975
976
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 971

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.



969
970
971
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 969

def key
  @key
end

#range_keyObject (readonly)

Returns the value of attribute range_key.



969
970
971
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 969

def range_key
  @range_key
end

#tableObject (readonly)

Returns the value of attribute table.



969
970
971
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 969

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



985
986
987
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 985

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



995
996
997
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 995

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

#set(values) ⇒ Object

Replaces the values of one or more attributes



1002
1003
1004
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 1002

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

#to_hObject

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



1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
# File 'lib/dynamoid/adapter_plugin/aws_sdk_v2.rb', line 1009

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