Class: Dymos::Query::Query

Inherits:
Base
  • Object
show all
Includes:
Parameter::FilterExpression
Defined in:
lib/dymos/query/query.rb

Instance Method Summary collapse

Methods included from Parameter::FilterExpression

#expression_attribute_names, #expression_attribute_values, #filter_expression

Methods inherited from Base

#build, #initialize, #name

Constructor Details

This class inherits a constructor from Dymos::Query::Base

Instance Method Details

#_add_filter(column, operator, value) ⇒ Object



70
71
72
73
74
75
76
# File 'lib/dymos/query/query.rb', line 70

def _add_filter(column, operator, value)
  [column.to_s, {
                attribute_value_list: [*value],
                comparison_operator: operator.to_s.upcase
              }
  ]
end

#add_conditions(*values) ⇒ Object



44
45
46
47
48
49
# File 'lib/dymos/query/query.rb', line 44

def add_conditions(*values)
  column, operator, value = parse_condition(*values)
  @query[:key_conditions] ||= {}
  @query[:key_conditions].store(*_add_filter(column, operator, value))
  self
end

#add_filter(*values) ⇒ Object



62
63
64
65
66
67
68
# File 'lib/dymos/query/query.rb', line 62

def add_filter(*values)
  column, operator, value = parse_condition(*values)
  @query[:query_filter] ||= {}
  @query[:query_filter].store(*_add_filter(column, operator, value))
  filter_operator 'AND' if @query[:conditional_operator].blank? && @query[:query_filter].count > 1
  self
end

#ascObject



83
84
85
# File 'lib/dymos/query/query.rb', line 83

def asc
  scan_index_forward true
end

#attributes(*value) ⇒ Object



15
16
17
18
# File 'lib/dymos/query/query.rb', line 15

def attributes(*value)
  @query[:attributes_to_get] = value
  self
end

#commandObject



6
7
8
# File 'lib/dymos/query/query.rb', line 6

def command
  'query'
end

#comparison_operator(value) ⇒ Object



51
52
53
54
# File 'lib/dymos/query/query.rb', line 51

def comparison_operator(value)
  @query[:comparison_operator] = value.to_s.upcase
  self
end

#conditions(value) ⇒ Object



39
40
41
42
# File 'lib/dymos/query/query.rb', line 39

def conditions(value)
  value.map { |v| add_conditions(*v) }
  self
end

#consistent_read(value) ⇒ Object



25
26
27
28
# File 'lib/dymos/query/query.rb', line 25

def consistent_read(value)
  @query[:consistent_read] = value
  self
end

#descObject



87
88
89
# File 'lib/dymos/query/query.rb', line 87

def desc
  scan_index_forward false
end

#exclusive_start_key(value) ⇒ Object Also known as: start_key



96
97
98
99
# File 'lib/dymos/query/query.rb', line 96

def exclusive_start_key(value)
  @query[:exclusive_start_key] = value.deep_stringify_keys
  self
end

#filter(value, operator = 'AND') ⇒ Object



56
57
58
59
60
# File 'lib/dymos/query/query.rb', line 56

def filter(value, operator='AND')
  value.map { |v| add_filter(*v) }
  filter_operator operator.to_s.upcase if value.count > 1
  self
end

#filter_operator(value) ⇒ Object



78
79
80
81
# File 'lib/dymos/query/query.rb', line 78

def filter_operator(value)
  @query[:conditional_operator] = value.to_s.upcase
  self
end

#index(value) ⇒ Object



10
11
12
13
# File 'lib/dymos/query/query.rb', line 10

def index(value)
  @query[:index_name] = value.to_s
  self
end

#limit(value) ⇒ Object



20
21
22
23
# File 'lib/dymos/query/query.rb', line 20

def limit(value)
  @query[:limit] = value
  self
end

#return_consumed_capacity(value) ⇒ Object



103
104
105
106
# File 'lib/dymos/query/query.rb', line 103

def return_consumed_capacity(value)
  @query[:return_consumed_capacity] = value.to_s.upcase
  self
end

#scan_index_forward(value) ⇒ Object



91
92
93
94
# File 'lib/dymos/query/query.rb', line 91

def scan_index_forward(value)
  @query[:scan_index_forward] = value
  self
end

#where(*value) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/dymos/query/query.rb', line 30

def where(*value)
  if value.count == 1 && value[0].is_a?(Hash)
    value[0].each { |k, v| add_conditions(k, :eq, v) }
  else
    value.each { |v| add_conditions(*v) }
  end
  self
end