Module: Dynamini::Querying

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

Constant Summary collapse

OPTIONAL_QUERY_PARAMS =
[:limit, :scan_index_forward]

Instance Method Summary collapse

Instance Method Details

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

Returns:

  • (Boolean)


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

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



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

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



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

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



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

def query(args = {})
  fail ArgumentError, 'You must provide a :hash_key.' unless args[:hash_key]

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