AWS services or capabilities described in AWS Documentation may vary by region/location. Click Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

Module: Aws::Record::ItemOperations

Included in:
Aws::Record
Defined in:
lib/aws-record/record/item_operations.rb

Defined Under Namespace

Modules: ItemOperationsClassMethods

Instance Method Summary collapse

Instance Method Details

#assign_attributes(opts) ⇒ Object

Assigns the attributes provided onto the model.

Examples:

Usage Example

class MyModel
  include Aws::Record
  integer_attr :uuid,   hash_key: true
  string_attr  :name, range_key: true
  integer_attr :age
  float_attr   :height
end

model = MyModel.new(id: 4, name: "John", age: 4, height: 70.5)
model.age    # => 4
model.height # => 70.5
model.save
model.dirty? # => false  

model.assign_attributes(age: 5, height: 150.75)
model.age    # => 5
model.height # => 150.75
model.dirty? # => true

Parameters:

  • opts (Hash)


109
110
111
112
113
114
115
116
# File 'lib/aws-record/record/item_operations.rb', line 109

def assign_attributes(opts)
  opts.each do |field, new_value|
    field = field.to_sym
    setter = "#{field}="
    raise ArgumentError.new "Invalid field: #{field} for model" unless respond_to?(setter)
    public_send(setter, new_value)
  end
end

#delete!Object

Deletes the item instance that matches the key values of this item instance in Amazon DynamoDB. Uses the Aws::DynamoDB::Client#delete_item API.



190
191
192
193
194
195
196
# File 'lib/aws-record/record/item_operations.rb', line 190

def delete!
  dynamodb_client.delete_item(
    table_name: self.class.table_name,
    key: key_values
  )
  self.instance_variable_get("@data").destroyed = true
end

#save(opts = {}) ⇒ Object

Saves this instance of an item to Amazon DynamoDB. If this item is “new” as defined by having new or altered key attributes, will attempt a conditional Aws::DynamoDB::Client#put_item call, which will not overwrite an existing item. If the item only has altered non-key attributes, will perform an Aws::DynamoDB::Client#update_item call. Uses this item instance's attributes in order to build the request on your behalf.

You can use the :force option to perform a simple put/overwrite without conditional validation or update logic.

Parameters:

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

Options Hash (opts):

  • :force (Boolean)

    if true, will save as a put operation and overwrite any existing item on the remote end. Otherwise, and by default, will either perform a conditional put or an update call.

Returns:

  • false if the record is invalid as defined by an attempt to call valid? on this item, if that method exists. Otherwise, returns client call return value.



76
77
78
79
80
81
82
# File 'lib/aws-record/record/item_operations.rb', line 76

def save(opts = {})
  if _invalid_record?(opts)
    false
  else
    _perform_save(opts)
  end
end

#save!(opts = {}) ⇒ Object

Saves this instance of an item to Amazon DynamoDB. If this item is “new” as defined by having new or altered key attributes, will attempt a conditional Aws::DynamoDB::Client#put_item call, which will not overwrite an existing item. If the item only has altered non-key attributes, will perform an Aws::DynamoDB::Client#update_item call. Uses this item instance's attributes in order to build the request on your behalf.

You can use the :force option to perform a simple put/overwrite without conditional validation or update logic.

Parameters:

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

Options Hash (opts):

  • :force (Boolean)

    if true, will save as a put operation and overwrite any existing item on the remote end. Otherwise, and by default, will either perform a conditional put or an update call.

Raises:



47
48
49
50
51
52
53
54
# File 'lib/aws-record/record/item_operations.rb', line 47

def save!(opts = {})
  ret = save(opts)
  if ret
    ret
  else
    raise Errors::ValidationError.new("Validation hook returned false!")
  end
end

#update(new_params, opts = {}) ⇒ Object

Mass assigns the attributes to the model and then performs a save

You can use the :force option to perform a simple put/overwrite without conditional validation or update logic.

Note that aws-record allows you to change your model's key values, but this will be interpreted as persisting a new item to your DynamoDB table

Examples:

Usage Example

class MyModel
  include Aws::Record
  integer_attr :uuid,   hash_key: true
  string_attr  :name, range_key: true
  integer_attr :age
  float_attr   :height
end

model = MyModel.new(id: 4, name: "John", age: 4, height: 70.5)
model.age    # => 4
model.height # => 70.5
model.save
model.dirty? # => false  

model.update(age: 5, height: 150.75)
model.age    # => 5
model.height # => 150.75
model.dirty? # => false

Parameters:

  • new_param, (Hash)

    contains the new parameters for the model

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

Options Hash (opts):

  • :force (Boolean)

    if true, will save as a put operation and overwrite any existing item on the remote end. Otherwise, and by default, will either perform a conditional put or an update call.

Returns:

  • false if the record is invalid as defined by an attempt to call valid? on this item, if that method exists. Otherwise, returns client call return value.



157
158
159
160
# File 'lib/aws-record/record/item_operations.rb', line 157

def update(new_params, opts = {})
  assign_attributes(new_params)
  save(opts)
end

#update!(new_params, opts = {}) ⇒ Object

Updates model attributes and validates new values

You can use the :force option to perform a simple put/overwrite without conditional validation or update logic.

Note that aws-record allows you to change your model's key values, but this will be interpreted as persisting a new item to your DynamoDB table

Parameters:

  • new_param, (Hash)

    contains the new parameters for the model

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

Options Hash (opts):

  • :force (Boolean)

    if true, will save as a put operation and overwrite any existing item on the remote end. Otherwise, and by default, will either perform a conditional put or an update call.

Returns:

  • The update mode if the update is successful

Raises:



181
182
183
184
# File 'lib/aws-record/record/item_operations.rb', line 181

def update!(new_params, opts = {})
  assign_attributes(new_params)
  save!(opts)
end