module TinyDyno::Persistable

Public Instance Methods

save(options = {}) click to toggle source
# File lib/tiny_dyno/persistable.rb, line 5
def save(options = {})
  unless options.has_key?(:validate) && options[:validate] == false
    return false unless self.valid?
  end
  remove_empty_attributes
  if new_record?
    if request_put_item(options)
      changes_applied
      @new_record = nil
      return true
    else
      return false
    end
  else
    if request_replace_item(options)
      changes_applied
      return true
    else
      return false
    end
  end
end

Private Instance Methods

build_item_request_entries() click to toggle source
# File lib/tiny_dyno/persistable.rb, line 56
def build_item_request_entries
  item_entries = {}
  attributes.each { |k,v| item_entries[k] = TinyDyno::Adapter.aws_attribute(field_type: fields[k].options[:type], value: v) }
  item_entries
end
build_put_item_request() click to toggle source
# File lib/tiny_dyno/persistable.rb, line 49
def build_put_item_request
  {
      table_name: self.class.table_name,
      item: build_item_request_entries
  }
end
remove_empty_attributes() click to toggle source
# File lib/tiny_dyno/persistable.rb, line 30
def remove_empty_attributes
  self.class.fields
  @attributes.each_pair do |k,v|
    next unless self.class.fields[k].options[:type].to_s == 'String'
    next unless v.respond_to?(:to_s)
    @attributes.delete(k) if v.to_s.nil? or v.to_s.empty?
  end
end
request_put_item(options) click to toggle source
# File lib/tiny_dyno/persistable.rb, line 39
def request_put_item(options)
  request = request_as_new_record(build_put_item_request)
  return(TinyDyno::Adapter.put_item(put_item_request: request))
end
request_replace_item(options) click to toggle source
# File lib/tiny_dyno/persistable.rb, line 44
def request_replace_item(options)
  request = build_put_item_request
  return(TinyDyno::Adapter.put_item(put_item_request: request))
end