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)


18
19
20
21
22
23
# File 'lib/dynamini/querying.rb', line 18

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



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/dynamini/querying.rb', line 25

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

#find_or_nil(hash_value, range_value = nil) ⇒ Object



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

def find_or_nil(hash_value, range_value = nil)
  find(hash_value, range_value)
rescue RuntimeError
  nil
end

#query(args = {}) ⇒ Object



37
38
39
40
41
42
43
44
45
46
# File 'lib/dynamini/querying.rb', line 37

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