dynamoid_advanced_where 1.3.0 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []