dynamoid_advanced_where 1.3.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/lint.yml +21 -0
  3. data/.github/workflows/test.yml +39 -0
  4. data/.rubocop-https---raw-githubusercontent-com-GetTerminus-ruby-shared-configs-master--rubocop-3-1-yml +5 -0
  5. data/.rubocop-https---raw-githubusercontent-com-GetTerminus-ruby-shared-configs-master--rubocop-yml +91 -0
  6. data/.rubocop.yml +6 -0
  7. data/.rubocop_todo.yml +42 -0
  8. data/.ruby-version +1 -1
  9. data/Appraisals +5 -4
  10. data/Gemfile +4 -3
  11. data/Gemfile.lock +70 -58
  12. data/README.md +27 -0
  13. data/Rakefile +5 -3
  14. data/dynamoid_advanced_where.gemspec +5 -2
  15. data/gemfiles/dynamoid_3.4.gemfile +6 -4
  16. data/gemfiles/dynamoid_3.5.gemfile +6 -4
  17. data/gemfiles/dynamoid_3.6.gemfile +6 -4
  18. data/gemfiles/dynamoid_latest.gemfile +6 -4
  19. data/gemfiles/dynamoid_master.gemfile +6 -4
  20. data/lib/dynamoid_advanced_where/batched_updater.rb +33 -20
  21. data/lib/dynamoid_advanced_where/filter_builder.rb +7 -7
  22. data/lib/dynamoid_advanced_where/integrations/model.rb +1 -1
  23. data/lib/dynamoid_advanced_where/nodes/and_node.rb +0 -1
  24. data/lib/dynamoid_advanced_where/nodes/array_literal_node.rb +34 -0
  25. data/lib/dynamoid_advanced_where/nodes/base_node.rb +2 -1
  26. data/lib/dynamoid_advanced_where/nodes/exists_node.rb +2 -1
  27. data/lib/dynamoid_advanced_where/nodes/field_node.rb +16 -25
  28. data/lib/dynamoid_advanced_where/nodes/greater_than_node.rb +2 -0
  29. data/lib/dynamoid_advanced_where/nodes/in_node.rb +30 -0
  30. data/lib/dynamoid_advanced_where/nodes/includes.rb +2 -0
  31. data/lib/dynamoid_advanced_where/nodes/literal_node.rb +1 -0
  32. data/lib/dynamoid_advanced_where/nodes/not.rb +0 -1
  33. data/lib/dynamoid_advanced_where/nodes/or_node.rb +2 -0
  34. data/lib/dynamoid_advanced_where/nodes/root_node.rb +1 -1
  35. data/lib/dynamoid_advanced_where/nodes.rb +3 -0
  36. data/lib/dynamoid_advanced_where/query_builder.rb +3 -1
  37. data/lib/dynamoid_advanced_where/query_materializer.rb +2 -2
  38. data/lib/dynamoid_advanced_where/version.rb +3 -1
  39. data/lib/dynamoid_advanced_where.rb +5 -3
  40. metadata +30 -10
  41. data/.circleci/config.yml +0 -129
@@ -5,6 +5,7 @@ module DynamoidAdvancedWhere
5
5
  DEEP_MERGE_ATTRIBUTES = %i[expression_attribute_names expression_attribute_values].freeze
6
6
 
7
7
  attr_accessor :query_builder, :_set_values, :_array_appends, :_set_appends, :_increments
8
+
8
9
  delegate :klass, to: :query_builder
9
10
 
10
11
  def initialize(query_builder:)
@@ -21,8 +22,8 @@ module DynamoidAdvancedWhere
21
22
  return_values: 'ALL_NEW',
22
23
  key: {
23
24
  klass.hash_key => hash_key,
24
- klass.range_key => range_key
25
- }.delete_if { |k, _v| k.nil? }
25
+ klass.range_key => range_key,
26
+ }.delete_if { |k, _v| k.nil? },
26
27
  }
27
28
  resp = client.update_item(update_item_arguments.merge(key_args))
28
29
 
@@ -102,7 +103,7 @@ module DynamoidAdvancedWhere
102
103
 
103
104
  update_args.merge!(
104
105
  collected_update_expression: [
105
- "#{command} #{update_args[:collected_update_expression].join(', ')}"
106
+ "#{command} #{update_args[:collected_update_expression].join(', ')}",
106
107
  ]
107
108
  )
108
109
  end
@@ -113,7 +114,7 @@ module DynamoidAdvancedWhere
113
114
  [
114
115
  explicit_set_args,
115
116
  list_append_for_arrays,
116
- increment_field_updates
117
+ increment_field_updates,
117
118
  ]
118
119
  ),
119
120
  command: 'SET'
@@ -129,11 +130,10 @@ module DynamoidAdvancedWhere
129
130
 
130
131
  _set_values.each_with_object(builder_hash) do |(k, v), h|
131
132
  prefix = merge_in_attr_placeholders(h, k, v)
132
- h[:collected_update_expression] << "##{prefix} = :#{prefix}"
133
+ h[:collected_update_expression] << "#{prefix[0]} = :#{prefix[1]}"
133
134
  end
134
135
  end
135
136
 
136
-
137
137
  def increment_field_updates
138
138
  return {} if _increments.empty?
139
139
 
@@ -142,13 +142,13 @@ module DynamoidAdvancedWhere
142
142
  builder_hash = {
143
143
  collected_update_expression: [],
144
144
  expression_attribute_values: {
145
- ":#{zero_prefix}": 0
146
- }
145
+ ":#{zero_prefix}": 0,
146
+ },
147
147
  }
148
148
 
149
149
  _increments.each_with_object(builder_hash) do |(field, change), h|
150
150
  prefix = merge_in_attr_placeholders(h, field, change)
151
- builder_hash[:collected_update_expression] << "##{prefix} = if_not_exists(##{prefix}, :#{zero_prefix}) + :#{prefix}"
151
+ builder_hash[:collected_update_expression] << "#{prefix[0]} = if_not_exists(#{prefix[0]}, :#{zero_prefix}) + :#{prefix[1]}"
152
152
  end
153
153
  end
154
154
 
@@ -158,7 +158,7 @@ module DynamoidAdvancedWhere
158
158
  _set_appends.each_with_object(builder_hash) do |to_append, h|
159
159
  to_append.each do |k, v|
160
160
  prefix = merge_in_attr_placeholders(h, k, v)
161
- builder_hash[:collected_update_expression] << "##{prefix} :#{prefix}"
161
+ builder_hash[:collected_update_expression] << "#{prefix[0]} :#{prefix[1]}"
162
162
  end
163
163
  end
164
164
  end
@@ -169,14 +169,14 @@ module DynamoidAdvancedWhere
169
169
  builder_hash = {
170
170
  collected_update_expression: [],
171
171
  expression_attribute_values: {
172
- ":#{empty_list_prefix}": []
173
- }
172
+ ":#{empty_list_prefix}": [],
173
+ },
174
174
  }
175
175
 
176
176
  update_args = _array_appends.each_with_object(builder_hash) do |to_append, h|
177
177
  to_append.each do |k, v|
178
178
  prefix = merge_in_attr_placeholders(h, k, v)
179
- builder_hash[:collected_update_expression] << "##{prefix} = list_append(if_not_exists(##{prefix}, :#{empty_list_prefix}), :#{prefix})"
179
+ builder_hash[:collected_update_expression] << "#{prefix[0]} = list_append(if_not_exists(#{prefix[0]}, :#{empty_list_prefix}), :#{prefix[1]})"
180
180
  end
181
181
  end
182
182
 
@@ -184,7 +184,7 @@ module DynamoidAdvancedWhere
184
184
  end
185
185
 
186
186
  def merge_in_attr_placeholders(hsh, field_name, value)
187
- prefix, new_data = prefixerize(field_name, value)
187
+ *prefix, new_data = prefixerize(field_name, value)
188
188
 
189
189
  hsh.merge!(new_data, &method(:hash_extendeer))
190
190
 
@@ -192,16 +192,22 @@ module DynamoidAdvancedWhere
192
192
  end
193
193
 
194
194
  def prefixerize(field_name, value)
195
+ field_names = field_name.is_a?(Array) ? field_name : [field_name]
195
196
  prefix = SecureRandom.hex
196
197
 
198
+ update_target = field_names.each_with_index.map do |name, idx|
199
+ ["##{prefix}#{idx}", name]
200
+ end
201
+
197
202
  [
203
+ update_target.map(&:first).join('.').to_s,
198
204
  prefix,
199
205
  {
200
- expression_attribute_names: { "##{prefix}" => field_name },
206
+ expression_attribute_names: Hash[update_target],
201
207
  expression_attribute_values: {
202
- ":#{prefix}" => dump(value, klass.attributes[field_name])
203
- }
204
- }
208
+ ":#{prefix}" => dump(value, field_name),
209
+ },
210
+ },
205
211
  ]
206
212
  end
207
213
 
@@ -222,8 +228,15 @@ module DynamoidAdvancedWhere
222
228
  )
223
229
  end
224
230
 
225
- def dump(value, config)
226
- Dynamoid::Dumping.dump_field(value, config)
231
+ def dump(value, field_name)
232
+ if klass.attributes[field_name]
233
+ Dynamoid::Dumping.dump_field(value, klass.attributes[field_name])
234
+ elsif value.respond_to?(:dynamoid_dump)
235
+ value.dynamoid_dump
236
+ else
237
+ value
238
+
239
+ end
227
240
  end
228
241
  end
229
242
  end
@@ -5,7 +5,7 @@ require_relative './nodes/null_node'
5
5
  module DynamoidAdvancedWhere
6
6
  class FilterBuilder
7
7
  VALID_COMPARETORS_FOR_RANGE_FILTER = [
8
- Nodes::GreaterThanNode
8
+ Nodes::GreaterThanNode,
9
9
  ].freeze
10
10
 
11
11
  attr_accessor :expression_node, :klass
@@ -18,13 +18,13 @@ module DynamoidAdvancedWhere
18
18
  def index_nodes
19
19
  [
20
20
  extract_query_filter_node,
21
- extract_range_key_node
21
+ extract_range_key_node,
22
22
  ].compact
23
23
  end
24
24
 
25
25
  def to_query_filter
26
26
  {
27
- key_condition_expression: key_condition_expression
27
+ key_condition_expression: key_condition_expression,
28
28
  }.merge!(expression_filters)
29
29
  end
30
30
 
@@ -41,21 +41,21 @@ module DynamoidAdvancedWhere
41
41
  def key_condition_expression
42
42
  @key_condition_expression ||= [
43
43
  extract_query_filter_node,
44
- extract_range_key_node
44
+ extract_range_key_node,
45
45
  ].compact.map(&:to_expression).join(' AND ')
46
46
  end
47
47
 
48
48
  def expression_attribute_names
49
49
  [
50
50
  expression_node,
51
- *index_nodes
51
+ *index_nodes,
52
52
  ].map(&:expression_attribute_names).inject({}, &:merge!)
53
53
  end
54
54
 
55
55
  def expression_attribute_values
56
56
  [
57
57
  expression_node,
58
- *index_nodes
58
+ *index_nodes,
59
59
  ].map(&:expression_attribute_values).inject({}, &:merge!)
60
60
  end
61
61
 
@@ -63,7 +63,7 @@ module DynamoidAdvancedWhere
63
63
  {
64
64
  filter_expression: expression_node.to_expression,
65
65
  expression_attribute_names: expression_attribute_names,
66
- expression_attribute_values: expression_attribute_values
66
+ expression_attribute_values: expression_attribute_values,
67
67
  }.delete_if { |_, v| v.nil? || v.empty? }
68
68
  end
69
69
 
@@ -31,4 +31,4 @@ module DynamoidAdvancedWhere
31
31
  end
32
32
  end
33
33
 
34
- Dynamoid::Document.send(:include, DynamoidAdvancedWhere::Integrations::Model)
34
+ Dynamoid::Document.include DynamoidAdvancedWhere::Integrations::Model
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
-
4
3
  module DynamoidAdvancedWhere
5
4
  module Nodes
6
5
  module Concerns
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'securerandom'
4
+
5
+ module DynamoidAdvancedWhere
6
+ module Nodes
7
+ class ArrayLiteralNode
8
+ attr_accessor :value, :attr_prefix
9
+
10
+ def initialize(value)
11
+ self.value = value
12
+ self.attr_prefix = SecureRandom.hex
13
+ freeze
14
+ end
15
+
16
+ def to_expression
17
+ values = value.each_with_index.map do |_, idx|
18
+ ":#{attr_prefix}#{idx}"
19
+ end
20
+ "(#{values.join(', ')})"
21
+ end
22
+
23
+ def expression_attribute_names
24
+ {}
25
+ end
26
+
27
+ def expression_attribute_values
28
+ value.each_with_index.map do |val, idx|
29
+ [":#{attr_prefix}#{idx}", val]
30
+ end.to_h
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'securerandom'
2
4
 
3
5
  module DynamoidAdvancedWhere
@@ -15,4 +17,3 @@ module DynamoidAdvancedWhere
15
17
  end
16
18
  end
17
19
  end
18
-
@@ -10,6 +10,7 @@ module DynamoidAdvancedWhere
10
10
  include Concerns::SupportsLogicalOr
11
11
 
12
12
  attr_accessor :field_node, :prefix
13
+
13
14
  def initialize(field_node:)
14
15
  self.field_node = field_node
15
16
  self.prefix = SecureRandom.hex
@@ -29,7 +30,7 @@ module DynamoidAdvancedWhere
29
30
 
30
31
  def expression_attribute_values
31
32
  {
32
- ":#{prefix}" => nil
33
+ ":#{prefix}" => nil,
33
34
  }
34
35
  end
35
36
  end
@@ -4,6 +4,7 @@ require_relative './equality_node'
4
4
  require_relative './greater_than_node'
5
5
  require_relative './exists_node'
6
6
  require_relative './includes'
7
+ require_relative './in_node'
7
8
  require_relative './subfield'
8
9
 
9
10
  module DynamoidAdvancedWhere
@@ -20,9 +21,7 @@ module DynamoidAdvancedWhere
20
21
  config.respond_to?(:call) ? config.call(attr_config) : config <= attr_config
21
22
  end&.last
22
23
 
23
- unless specific_klass
24
- raise ArgumentError, "unable to find field type for `#{attr_config}`"
25
- end
24
+ raise ArgumentError, "unable to find field type for `#{attr_config}`" unless specific_klass
26
25
 
27
26
  specific_klass.new(field_path: field_path)
28
27
  end
@@ -62,7 +61,9 @@ module DynamoidAdvancedWhere
62
61
 
63
62
  class StringAttributeNode < FieldNode
64
63
  include Concerns::SupportsIncludes
64
+ include Concerns::SupportsIn
65
65
  end
66
+
66
67
  class NativeBooleanAttributeNode < FieldNode; end
67
68
 
68
69
  class StringBooleanAttributeNode < FieldNode
@@ -75,13 +76,11 @@ module DynamoidAdvancedWhere
75
76
  include Concerns::SupportsGreaterThan
76
77
 
77
78
  ALLOWED_COMPARISON_TYPES = [
78
- Numeric
79
+ Numeric,
79
80
  ].freeze
80
81
 
81
82
  def parse_right_hand_side(val)
82
- unless ALLOWED_COMPARISON_TYPES.detect { |k| val.is_a?(k) }
83
- raise ArgumentError, "unable to compare number to `#{val.class}`"
84
- end
83
+ raise ArgumentError, "unable to compare number to `#{val.class}`" unless ALLOWED_COMPARISON_TYPES.detect { |k| val.is_a?(k) }
85
84
 
86
85
  val
87
86
  end
@@ -91,9 +90,10 @@ module DynamoidAdvancedWhere
91
90
  include Concerns::SupportsGreaterThan
92
91
 
93
92
  def parse_right_hand_side(val)
94
- if val.is_a?(Date)
93
+ case val
94
+ when Date
95
95
  val.to_time.to_i
96
- elsif val.is_a?(Time)
96
+ when Time
97
97
  val.to_f
98
98
  else
99
99
  raise ArgumentError, "unable to compare datetime to type #{val.class}"
@@ -105,9 +105,7 @@ module DynamoidAdvancedWhere
105
105
  include Concerns::SupportsGreaterThan
106
106
 
107
107
  def parse_right_hand_side(val)
108
- if !val.is_a?(Date) || val.is_a?(DateTime)
109
- raise ArgumentError, "unable to compare date to type #{val.class}"
110
- end
108
+ raise ArgumentError, "unable to compare date to type #{val.class}" if !val.is_a?(Date) || val.is_a?(DateTime)
111
109
 
112
110
  (val - Dynamoid::Persistence::UNIX_EPOCH_DATE).to_i
113
111
  end
@@ -117,9 +115,7 @@ module DynamoidAdvancedWhere
117
115
  include Concerns::SupportsIncludes
118
116
 
119
117
  def parse_right_hand_side(val)
120
- unless val.is_a?(String)
121
- raise ArgumentError, "unable to compare date to type #{val.class}"
122
- end
118
+ raise ArgumentError, "unable to compare date to type #{val.class}" unless val.is_a?(String)
123
119
 
124
120
  val
125
121
  end
@@ -129,9 +125,7 @@ module DynamoidAdvancedWhere
129
125
  include Concerns::SupportsIncludes
130
126
 
131
127
  def parse_right_hand_side(val)
132
- unless val.is_a?(Integer)
133
- raise ArgumentError, "unable to compare integer value to type #{val.class}"
134
- end
128
+ raise ArgumentError, "unable to compare integer value to type #{val.class}" unless val.is_a?(Integer)
135
129
 
136
130
  val
137
131
  end
@@ -141,9 +135,7 @@ module DynamoidAdvancedWhere
141
135
  include Concerns::SupportsIncludes
142
136
 
143
137
  def parse_right_hand_side(val)
144
- unless val.is_a?(String)
145
- raise ArgumentError, "unable to compare string to type #{val.class}"
146
- end
138
+ raise ArgumentError, "unable to compare string to type #{val.class}" unless val.is_a?(String)
147
139
 
148
140
  val
149
141
  end
@@ -153,9 +145,7 @@ module DynamoidAdvancedWhere
153
145
  include Concerns::SupportsIncludes
154
146
 
155
147
  def parse_right_hand_side(val)
156
- unless val.is_a?(Integer)
157
- raise ArgumentError, "unable to compare integer to type #{val.class}"
158
- end
148
+ raise ArgumentError, "unable to compare integer to type #{val.class}" unless val.is_a?(Integer)
159
149
 
160
150
  val
161
151
  end
@@ -176,6 +166,7 @@ module DynamoidAdvancedWhere
176
166
  FIELD_MAPPING = {
177
167
  { type: :string } => StringAttributeNode,
178
168
  { type: :number } => NumberAttributeNode,
169
+ { type: :integer } => NumberAttributeNode,
179
170
 
180
171
  # Boolean Fields
181
172
  { type: :boolean, store_as_native_boolean: true } =>
@@ -209,7 +200,7 @@ module DynamoidAdvancedWhere
209
200
  { type: :raw } => RawAttributeNode,
210
201
 
211
202
  # Custom Object
212
- ->(c) { c[:type].is_a?(Class) } => CustomClassAttributeNode
203
+ ->(c) { c[:type].is_a?(Class) } => CustomClassAttributeNode,
213
204
  }.freeze
214
205
  end
215
206
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DynamoidAdvancedWhere
2
4
  module Nodes
3
5
  class GreaterThanNode < OperationNode
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module DynamoidAdvancedWhere
4
+ module Nodes
5
+ class InNode < OperationNode
6
+ def to_expression
7
+ "#{lh_operation.to_expression} IN #{rh_operation.to_expression}"
8
+ end
9
+ end
10
+
11
+ module Concerns
12
+ module SupportsIn
13
+ def in?(other_value)
14
+ val = if respond_to?(:parse_right_hand_side)
15
+ parse_right_hand_side(other_value)
16
+ else
17
+ other_value
18
+ end
19
+
20
+ raise 'Expected parameter of `in?` to be an array' unless val.is_a?(Array)
21
+
22
+ InNode.new(
23
+ lh_operation: self,
24
+ rh_operation: ArrayLiteralNode.new(val)
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DynamoidAdvancedWhere
2
4
  module Nodes
3
5
  class IncludesNode < OperationNode
@@ -6,6 +6,7 @@ module DynamoidAdvancedWhere
6
6
  module Nodes
7
7
  class LiteralNode
8
8
  attr_accessor :value, :attr_prefix
9
+
9
10
  def initialize(value)
10
11
  self.value = value
11
12
  self.attr_prefix = SecureRandom.hex
@@ -37,6 +37,5 @@ module DynamoidAdvancedWhere
37
37
  "NOT(#{sub_node.to_expression})"
38
38
  end
39
39
  end
40
-
41
40
  end
42
41
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DynamoidAdvancedWhere
2
4
  module Nodes
3
5
  class OrNode < BaseNode
@@ -40,7 +40,7 @@ module DynamoidAdvancedWhere
40
40
  instance_eval(&blk)
41
41
  else
42
42
  blk.call(self)
43
- end
43
+ end
44
44
  end
45
45
  end
46
46
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './nodes/base_node'
2
4
  require_relative './nodes/field_node'
3
5
  require_relative './nodes/literal_node'
6
+ require_relative './nodes/array_literal_node'
4
7
  require_relative './nodes/operation_node'
5
8
  require_relative './nodes/root_node'
6
9
  require_relative './nodes/and_node'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative './nodes'
2
4
  require_relative './query_materializer'
3
5
  require_relative './batched_updater'
@@ -65,7 +67,7 @@ module DynamoidAdvancedWhere
65
67
  self.class.new(**{
66
68
  klass: klass,
67
69
  start_hash: start_hash,
68
- root_node: root_node
70
+ root_node: root_node,
69
71
  }.merge(changes))
70
72
  end
71
73
  end
@@ -48,7 +48,7 @@ module DynamoidAdvancedWhere
48
48
 
49
49
  def each_page_via_query
50
50
  query = {
51
- table_name: table_name
51
+ table_name: table_name,
52
52
  }.merge(filter_builder.to_query_filter)
53
53
 
54
54
  query[:limit] = query_builder.record_limit if query_builder.record_limit
@@ -76,7 +76,7 @@ module DynamoidAdvancedWhere
76
76
 
77
77
  def each_page_via_scan
78
78
  query = {
79
- table_name: table_name
79
+ table_name: table_name,
80
80
  }.merge(filter_builder.to_scan_filter)
81
81
 
82
82
  query[:limit] = query_builder.record_limit if query_builder.record_limit
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module DynamoidAdvancedWhere
2
- VERSION = "1.3.0"
4
+ VERSION = '1.5.0'
3
5
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'dynamoid'
2
4
 
3
- require "dynamoid_advanced_where/version"
4
- require "dynamoid_advanced_where/integrations/model"
5
+ require 'dynamoid_advanced_where/version'
6
+ require 'dynamoid_advanced_where/integrations/model'
5
7
 
6
8
  module DynamoidAdvancedWhere
7
- # Your code goes here...
9
+ # Your code goes here...
8
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dynamoid_advanced_where
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Malinconico
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-03-03 00:00:00.000000000 Z
11
+ date: 2022-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dynamoid
@@ -31,7 +31,7 @@ dependencies:
31
31
  - !ruby/object:Gem::Version
32
32
  version: '4'
33
33
  - !ruby/object:Gem::Dependency
34
- name: bundler-audit
34
+ name: appraisal
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
@@ -58,6 +58,20 @@ dependencies:
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
60
  version: '1.16'
61
+ - !ruby/object:Gem::Dependency
62
+ name: bundler-audit
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
61
75
  - !ruby/object:Gem::Dependency
62
76
  name: fasterer
63
77
  requirement: !ruby/object:Gem::Requirement
@@ -129,7 +143,7 @@ dependencies:
129
143
  - !ruby/object:Gem::Version
130
144
  version: '0'
131
145
  - !ruby/object:Gem::Dependency
132
- name: appraisal
146
+ name: webmock
133
147
  requirement: !ruby/object:Gem::Requirement
134
148
  requirements:
135
149
  - - ">="
@@ -149,10 +163,14 @@ executables: []
149
163
  extensions: []
150
164
  extra_rdoc_files: []
151
165
  files:
152
- - ".circleci/config.yml"
166
+ - ".github/workflows/lint.yml"
167
+ - ".github/workflows/test.yml"
153
168
  - ".gitignore"
154
169
  - ".rspec"
170
+ - ".rubocop-https---raw-githubusercontent-com-GetTerminus-ruby-shared-configs-master--rubocop-3-1-yml"
171
+ - ".rubocop-https---raw-githubusercontent-com-GetTerminus-ruby-shared-configs-master--rubocop-yml"
155
172
  - ".rubocop.yml"
173
+ - ".rubocop_todo.yml"
156
174
  - ".ruby-version"
157
175
  - ".travis.yml"
158
176
  - Appraisals
@@ -180,11 +198,13 @@ files:
180
198
  - lib/dynamoid_advanced_where/integrations/model.rb
181
199
  - lib/dynamoid_advanced_where/nodes.rb
182
200
  - lib/dynamoid_advanced_where/nodes/and_node.rb
201
+ - lib/dynamoid_advanced_where/nodes/array_literal_node.rb
183
202
  - lib/dynamoid_advanced_where/nodes/base_node.rb
184
203
  - lib/dynamoid_advanced_where/nodes/equality_node.rb
185
204
  - lib/dynamoid_advanced_where/nodes/exists_node.rb
186
205
  - lib/dynamoid_advanced_where/nodes/field_node.rb
187
206
  - lib/dynamoid_advanced_where/nodes/greater_than_node.rb
207
+ - lib/dynamoid_advanced_where/nodes/in_node.rb
188
208
  - lib/dynamoid_advanced_where/nodes/includes.rb
189
209
  - lib/dynamoid_advanced_where/nodes/less_than_node.rb
190
210
  - lib/dynamoid_advanced_where/nodes/literal_node.rb
@@ -197,10 +217,10 @@ files:
197
217
  - lib/dynamoid_advanced_where/query_builder.rb
198
218
  - lib/dynamoid_advanced_where/query_materializer.rb
199
219
  - lib/dynamoid_advanced_where/version.rb
200
- homepage:
220
+ homepage:
201
221
  licenses: []
202
222
  metadata: {}
203
- post_install_message:
223
+ post_install_message:
204
224
  rdoc_options: []
205
225
  require_paths:
206
226
  - lib
@@ -215,8 +235,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
215
235
  - !ruby/object:Gem::Version
216
236
  version: '0'
217
237
  requirements: []
218
- rubygems_version: 3.1.2
219
- signing_key:
238
+ rubygems_version: 3.2.33
239
+ signing_key:
220
240
  specification_version: 4
221
241
  summary: things
222
242
  test_files: []