Method: DynaModel::Query::ClassMethods#read

Defined in:
lib/dyna_model/query.rb

#read(hash_value, range_value_or_options = nil, options = nil) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'lib/dyna_model/query.rb', line 21

def read(hash_value, range_value_or_options=nil, options=nil)
  if self.range_key.nil?
    item_attrs = self.dynamo_db_table.get_item(hash_value, range_value_or_options || {})[:item]
    return nil if item_attrs.nil?
    self.obj_from_attrs(Table.values_from_response_hash(item_attrs), (range_value_or_options || {}))
  else
    raise ArgumentError, "This table requires a range_key_value" if range_value_or_options.nil?
    self.read_range(hash_value, (options || {}).merge(range: { self.range_key[:attribute_name].to_sym.eq => range_value_or_options})).first
  end
end