Module: Dynamini::Querying

Included in:
Base
Defined in:
lib/dynamini/querying.rb

Instance Method Summary collapse

Instance Method Details

#exists?(hash_value, range_value = nil) ⇒ Boolean

Returns:

  • (Boolean)


11
12
13
14
15
16
# File 'lib/dynamini/querying.rb', line 11

def exists?(hash_value, range_value = nil)
  fail 'Range key cannot be blank.' if range_key && range_value.nil?

  r = client.get_item(table_name: table_name, key: create_key_hash(hash_value, range_value))
  r.item.present?
end

#find(hash_value, range_value = nil) ⇒ Object



4
5
6
7
8
9
# File 'lib/dynamini/querying.rb', line 4

def find(hash_value, range_value = nil)
  fail 'Range key cannot be blank.' if range_key && range_value.nil?
  response = client.get_item(table_name: table_name, key: create_key_hash(hash_value, range_value))
  raise 'Item not found.' unless response.item
  new(response.item.symbolize_keys, false)
end

#find_or_new(hash_value, range_value = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/dynamini/querying.rb', line 18

def find_or_new(hash_value, range_value = nil)
  validate_query_values(hash_value, range_value)


  r = client.get_item(table_name: table_name, key: create_key_hash(hash_value, range_value))
  if r.item
    new(r.item.symbolize_keys, false)
  else
    range_key ? new(hash_key => hash_value, range_key => range_value) : new(hash_key => hash_value)
  end
end

#query(args = {}) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/dynamini/querying.rb', line 30

def query(args = {})
  fail ArgumentError, 'You must provide a :hash_key.' unless args[:hash_key]
  fail TypeError, 'Your range key must be handled as an integer, float, date, or time.' unless self.range_is_numeric?

  response = dynamo_query(args)
  objects = []
  response.items.each do |item|
    objects << new(item.symbolize_keys, false)
  end
  objects
end