Class: AWS::DynamoDB::Item

Inherits:
Core::Resource
  • Object
show all
Includes:
Expectations
Defined in:
lib/aws/dynamo_db/item.rb

Overview

Represents a DynamoDB item. An item is identified by simple or complex primary key (according to the table schema) and consists of a collection of attributes. Attributes are name/value pairs where the value may be a string, number, string set, or number set.

Getting an item by hash key value:

item = table.items['hash-key-value']

Getting an item from a table with both hash and range keys:

item = table.items['hash-key','range-key']

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#hash_valueString, Numeric (readonly)

Returns The hash key value of the item.

Returns:

  • (String, Numeric)

    The hash key value of the item.



41
42
43
# File 'lib/aws/dynamo_db/item.rb', line 41

def hash_value
  @hash_value
end

#range_valueString, ... (readonly)

Returns The range key value of the item, or nil if the table has a simple primary key.

Returns:

  • (String, Numeric, nil)

    The range key value of the item, or nil if the table has a simple primary key.



45
46
47
# File 'lib/aws/dynamo_db/item.rb', line 45

def range_value
  @range_value
end

#tableTable (readonly)

Returns The table in which the item is stored.

Returns:

  • (Table)

    The table in which the item is stored.



38
39
40
# File 'lib/aws/dynamo_db/item.rb', line 38

def table
  @table
end

Instance Method Details

#attributesAttributeCollection

Returns An object representing the attributes of the item.

Returns:



99
100
101
# File 'lib/aws/dynamo_db/item.rb', line 99

def attributes
  AttributeCollection.new(self)
end

#delete(options = {}) ⇒ Object

Deletes the item.

Parameters:

  • options (Hash) (defaults to: {})

    Options for deleting the item.

Options Hash (options):

  • :if (Hash)

    Designates a conditional delete. The operation will fail unless the item exists and has the attributes in the value for this option. For example:

    # throws DynamoDB::Errors::ConditionalCheckFailedException
    # unless the item has "color" set to "red"
    item.delete(:if => { :color => "red" })
    
  • :unless_exists (String, Symbol, Array)

    A name or collection of attribute names; if the item has a value for any of these attributes, this method will raise DynamoDB::Errors::ConditionalCheckFailedException. For example:

    item.delete(:unless_exists => "version")
    


74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/aws/dynamo_db/item.rb', line 74

def delete(options = {})
  client_opts = item_key_options(self)

  expected = expect_conditions(options)
  client_opts[:expected] = expected unless expected.empty?

  client_opts[:return_values] = options[:return].to_s.upcase if
    options[:return]

  resp = client.delete_item(client_opts)

  values_from_response_hash(resp.data["Attributes"]) if
    options[:return] and resp.data["Attributes"]
end

#exists?(options = {}) ⇒ Boolean

Returns True if the item exists.

Returns:

  • (Boolean)

    True if the item exists.



90
91
92
93
94
95
# File 'lib/aws/dynamo_db/item.rb', line 90

def exists?(options = {})
  client_opts = item_key_options(self, options)
  client_opts[:attributes_to_get] = [table.hash_key.name]
  resp = client.get_item(client_opts)
  resp.data.key?("Item")
end