Module: Eventosaurus::QueryBuilder
- Defined in:
- lib/eventosaurus/query_builder.rb
Instance Method Summary collapse
- #build_local_secondary_event_class_method(method_name, attr_name) ⇒ Object
- #build_local_secondary_methods(secondary_indexes) ⇒ Object
- #build_local_secondary_query_instance_method(method_name, attr_name) ⇒ Object
- #build_partition_key_event_class_method(method_name) ⇒ Object
- #build_partition_key_methods ⇒ Object
- #build_partition_key_query_instance_method(method_name) ⇒ Object
- #build_query_methods ⇒ Object
- #generate_method_name(attr) ⇒ Object
- #new_query ⇒ Object
Instance Method Details
#build_local_secondary_event_class_method(method_name, attr_name) ⇒ Object
43 44 45 46 47 48 49 |
# File 'lib/eventosaurus/query_builder.rb', line 43 def build_local_secondary_event_class_method(method_name, attr_name) singleton_proc = proc do |value, operator = 'EQ'| new_query.by_local_secondary(name: attr_name, value: value, operator: operator) end define_singleton_method(method_name, singleton_proc) end |
#build_local_secondary_methods(secondary_indexes) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/eventosaurus/query_builder.rb', line 34 def build_local_secondary_methods(secondary_indexes) secondary_indexes.each_pair do |attr_name, _| method_name = generate_method_name(attr_name) build_local_secondary_event_class_method(method_name, attr_name) build_local_secondary_query_instance_method(method_name, attr_name) end end |
#build_local_secondary_query_instance_method(method_name, attr_name) ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/eventosaurus/query_builder.rb', line 51 def build_local_secondary_query_instance_method(method_name, attr_name) instance_proc = proc do |value, operator = 'EQ'| by_local_secondary(name: attr_name, value: value, operator: operator) end Eventosaurus::Models::Query.send(:define_method, method_name, instance_proc) end |
#build_partition_key_event_class_method(method_name) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/eventosaurus/query_builder.rb', line 18 def build_partition_key_event_class_method(method_name) singleton_proc = proc do |value, operator = 'EQ'| new_query.by_partition_key(value: value, operator: operator) end define_singleton_method(method_name, singleton_proc) end |
#build_partition_key_methods ⇒ Object
11 12 13 14 15 16 |
# File 'lib/eventosaurus/query_builder.rb', line 11 def build_partition_key_methods method_name = generate_method_name(partition_key_name) build_partition_key_event_class_method(method_name) build_partition_key_query_instance_method(method_name) end |
#build_partition_key_query_instance_method(method_name) ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/eventosaurus/query_builder.rb', line 26 def build_partition_key_query_instance_method(method_name) instance_proc = proc do |value, operator = 'EQ'| by_partition_key(value: value, operator: operator) end Eventosaurus::Models::Query.send(:define_method, method_name, instance_proc) end |
#build_query_methods ⇒ Object
5 6 7 8 9 |
# File 'lib/eventosaurus/query_builder.rb', line 5 def build_query_methods secondary_indexes = definition[:local_indexes] || {} build_partition_key_methods build_local_secondary_methods(secondary_indexes) end |
#generate_method_name(attr) ⇒ Object
63 64 65 |
# File 'lib/eventosaurus/query_builder.rb', line 63 def generate_method_name(attr) "by_#{attr}".to_sym end |
#new_query ⇒ Object
59 60 61 |
# File 'lib/eventosaurus/query_builder.rb', line 59 def new_query Eventosaurus::Models::Query.new(definition) end |