Class: AWS::SimpleDB::AttributeCollection

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/aws/simple_db/attribute_collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(item, options = {}) ⇒ AttributeCollection

Parameters:

  • The (Item)

    item to create an attribute collection for.



32
33
34
35
# File 'lib/aws/simple_db/attribute_collection.rb', line 32

def initialize item, options = {}
  @item = item
  super
end

Instance Attribute Details

#itemItem (readonly)

Returns The item this collection belongs to.

Returns:

  • (Item)

    The item this collection belongs to.



38
39
40
# File 'lib/aws/simple_db/attribute_collection.rb', line 38

def item
  @item
end

Instance Method Details

#[](attribute_name) ⇒ Item

Note:

This does not make a request to SimpleDB.

Retuns an Attribute with the given name.

You can ask for any attribute by name. The attribute may or may not actually exist in SimpleDB.

Examples:

Get an attribute by symbol or string name

colors = item.attributes[:colors]
colors = item.attributes['colors']

Parameters:

  • attribute_name (String, Symbol)

    name of the attribute to get.

Returns:

  • (Item)

    An item with the given name.



52
53
54
# File 'lib/aws/simple_db/attribute_collection.rb', line 52

def [] attribute_name
  Attribute.new(item, attribute_name.to_s)
end

#[]=(attribute_name, *values) ⇒ Object

Sets the values for a given attribute.

Examples:

Replace all of the values for the named attribute.

item.attributes[:color] = 'red', 'blue'

Returns:

  • This method returns the values passed to it.



61
62
63
# File 'lib/aws/simple_db/attribute_collection.rb', line 61

def []= attribute_name, *values
  self[attribute_name].set(*values)
end

#add(attributes) ⇒ nil

Adds values to attributes on the #item.

The attributes_hash should have attribute names as keys. The hash values should be either strings or arrays of strings.

@param attribute_hash

Examples:


item.attributes.add(
  'colors' => ['red', 'blue'],  
  'category' => 'clearance')

Returns:

  • (nil)


160
161
162
# File 'lib/aws/simple_db/attribute_collection.rb', line 160

def add attributes
  do_put(attribute_hashes(attributes, false), attributes)
end

#delete(*args) ⇒ nil

Delete one or more attributes from #item.

Examples:

Delete a list of attributes by name

item.attributes.delete 'size', 'color'
item.attributes.delete %w(size color)

Parameters:

  • attribute_names

    An array or list of attribute names to delete.

Returns:

  • (nil)


216
217
218
219
220
221
222
223
# File 'lib/aws/simple_db/attribute_collection.rb', line 216

def delete *args
  if args.size == 1 and args.first.kind_of?(Hash)
    delete_attribute_values(args.first)
  else
    delete_named_attributes(*args)
  end
  nil
end

#each(options = {}) {|attribute| ... } ⇒ nil

Yields all attribute for this item.

Examples:

Getting all attributes for an item


item.attributes.each do |attribute|
  puts attribute.name
end

Parameters:

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

Options Hash (options):

  • :consistent_read (Boolean) — default: false

    Causes this method to yield the most current attributes for this item.

Yields:

  • (attribute)

    Yields once for every attribute on the item. Yields each attribute only one time, even it has multiple values.

Yield Parameters:

Returns:

  • (nil)


114
115
116
117
118
119
120
121
122
123
124
# File 'lib/aws/simple_db/attribute_collection.rb', line 114

def each options = {}, &block
  yielded = {}
  each_value(options) do |attribute_name, attribute_value| 
    unless yielded[attribute_name]
      attribute = self[attribute_name]
      yield(attribute)
      yielded[attribute_name] = true
    end
  end
  nil
end

#each_value(options = {}) {|attribute_name, attribute_value| ... } ⇒ nil

Yields all attribute values with their names.

Examples:

Getting all values for an item


item.attributes.each_value do |name, value|
  puts "#{name}: #{value}"
end

Parameters:

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

Options Hash (options):

  • :consistent_read (Boolean) — default: false

    Causes this method to yield the most current attributes for this item.

Yields:

  • (attribute_name, attribute_value)

    Yields once for every attribute value on the item.

Yield Parameters:

  • attribute_name (String)
  • attribute_value (String)

Returns:

  • (nil)


81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/aws/simple_db/attribute_collection.rb', line 81

def each_value options = {}, &block

  list = client.get_attributes(
    :domain_name => item.domain.name,
    :item_name => item.name,
    :consistent_read => consistent_read(options))

  list.attributes.each do |attribute|
    attribute_name = attribute.name
    attribute_value = attribute.value
    yield(attribute_name, attribute_value)
  end

  nil

end

#put(options = {}) ⇒ nil

Perform a mixed update of added and replace attribues.

item.attributes.put(
  :add => { 'colors' => %w(green blue), 'tags' => 'cool' }
  :replace => { 'quantity' => 5 }
)

Parameters:

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

Options Hash (options):

  • :add (Hash)

    A hash of attribute names and values to append to this item.

  • :replace (Hash)

    A hash of attribute names and values to add to this item. If there are currently attributes of the same name they will be replaced (not appended to).

  • :replace (Hash)

Returns:

  • (nil)


179
180
181
182
183
184
185
# File 'lib/aws/simple_db/attribute_collection.rb', line 179

def put options = {}
  add = options[:add] || {}
  replace = options[:replace] || {}
  attributes = attribute_hashes(add, false)
  attributes += attribute_hashes(replace, true)
  do_put(attributes, options)
end

#replace(attributes) ⇒ nil Also known as: set

Replaces attributes for the #item.

The attributes_hash should have attribute names as keys. The hash values should be either strings or arrays of strings.

Attributes not named in this hash are left alone. Attributes named in this hash are replaced.

Examples:


item.attributes.set(
  'colors' => ['red', 'blue'],  
  'category' => 'clearance')

Parameters:

  • attributes (Hash)

Returns:

  • (nil)


142
143
144
# File 'lib/aws/simple_db/attribute_collection.rb', line 142

def replace attributes
  do_put(attribute_hashes(attributes, true), attributes)
end

#to_h(options = {}) ⇒ Hash

Returns a hash of all attributes (names and values). The attribute names are strings and the values are arrays of strings.

Examples:

item.attributes.to_h
#=> { 'colors' => ['red','blue'], 'size' => ['large'] }

Parameters:

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

Options Hash (options):

  • :consistent_read (Boolean) — default: false

    Causes this method to return the most current attributes values.

Returns:

  • (Hash)


199
200
201
202
203
204
205
206
# File 'lib/aws/simple_db/attribute_collection.rb', line 199

def to_h options = {}
  hash = {}
  each_value(options) do |attribute_name,attribute_value|
    hash[attribute_name] ||= []
    hash[attribute_name] << attribute_value
  end
  hash
end