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:

  • item (Item)

    The item to create an attribute collection for.



26
27
28
29
# File 'lib/aws/simple_db/attribute_collection.rb', line 26

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.



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

def item
  @item
end

Instance Method Details

#[](attribute_name) ⇒ Item

Note:

This does not make a request to SimpleDB.

Returns 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.



48
49
50
# File 'lib/aws/simple_db/attribute_collection.rb', line 48

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.



59
60
61
# File 'lib/aws/simple_db/attribute_collection.rb', line 59

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[Hash] attribute_hash

Examples:


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

Returns:

  • (nil)


158
159
160
# File 'lib/aws/simple_db/attribute_collection.rb', line 158

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

#delete(attributes) ⇒ nil #delete(*attribute_names) ⇒ nil

Delete one or more attributes from #item.

Examples:

Delete a list of attributes by name (accepts a list or array)


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

Delete a specific list of attribute values


item.attributes.delete(:color => 'red', :tags => %w(special limited))

Overloads:

  • #delete(attributes) ⇒ nil

    Parameters:

    • attributes (Hash)

      A hash of attribute names and values to delete.

    Returns:

    • (nil)
  • #delete(*attribute_names) ⇒ nil

    Parameters:

    • A (String)

      list of attribute names to delete.

    Returns:

    • (nil)


229
230
231
232
233
234
235
236
# File 'lib/aws/simple_db/attribute_collection.rb', line 229

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)


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

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)


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

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 attributes.

Examples:


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)


140
141
142
# File 'lib/aws/simple_db/attribute_collection.rb', line 140

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)


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

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