jsonb_accessor 1.0.0.beta.6 → 1.0.0.beta.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd5842d35872b7e0a4aae6cf87b7a58b32dc7c23
4
- data.tar.gz: 74587e5629b53a1e34416e966527a59087a522d7
3
+ metadata.gz: 9443b5a6ade6928899a6d286c8302a95bab56c9c
4
+ data.tar.gz: 5168b13af14c34bfd05652f9dab3099ef0b555bd
5
5
  SHA512:
6
- metadata.gz: 9fdafe03f73b4e9b002f592b2eccac07dee6db7e236285cbc4a7ddb7394f96a74e441d25f32397e1fe210631444d06fcdea25b416cd2849623a6db1ad8974787
7
- data.tar.gz: 311f65d600e4e52ed56f1eb8412628821ff453266beebeb4045c665209c437690000beaa69d30f32c9439566f99df79e2d91b86eeae045099f365df653e8fb70
6
+ metadata.gz: 3d0dfee7666cf5d0390faa6205813152f3c1ef013ff26864d64959cb5eaf9bb099784677d870f04176ff30b089b0c247b21361688b71d34c6c0808caa4fddbd8
7
+ data.tar.gz: 887584f334980e0c03866f443090db22c1d9dcd3ffc360c2733a7d133388aed25ed3f73438ba33a9cba35a71468b959fb9fc6e8ded1cb4fe7bf81e1479cf11af
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- jsonb_accessor (1.0.0.beta.6)
4
+ jsonb_accessor (1.0.0.beta.7)
5
5
  activerecord (>= 5.0)
6
6
  activesupport (>= 5.0)
7
7
  pg (>= 0.18.1)
@@ -123,7 +123,7 @@ DEPENDENCIES
123
123
  activerecord (~> 5.0.0)
124
124
  appraisal (~> 2.2.0)
125
125
  awesome_print
126
- bundler (~> 1.9)
126
+ bundler (~> 1.15.0)
127
127
  database_cleaner (~> 1.6.0)
128
128
  jsonb_accessor!
129
129
  pg
@@ -136,4 +136,4 @@ DEPENDENCIES
136
136
  standalone_migrations (~> 5.2.0)
137
137
 
138
138
  BUNDLED WITH
139
- 1.14.6
139
+ 1.15.3
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- jsonb_accessor (1.0.0.beta.6)
4
+ jsonb_accessor (1.0.0.beta.7)
5
5
  activerecord (>= 5.0)
6
6
  activesupport (>= 5.0)
7
7
  pg (>= 0.18.1)
@@ -123,7 +123,7 @@ DEPENDENCIES
123
123
  activerecord (~> 5.1.0)
124
124
  appraisal (~> 2.2.0)
125
125
  awesome_print
126
- bundler (~> 1.9)
126
+ bundler (~> 1.15.0)
127
127
  database_cleaner (~> 1.6.0)
128
128
  jsonb_accessor!
129
129
  pg
@@ -136,4 +136,4 @@ DEPENDENCIES
136
136
  standalone_migrations (~> 5.2.0)
137
137
 
138
138
  BUNDLED WITH
139
- 1.14.6
139
+ 1.15.3
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_dependency "pg", ">= 0.18.1"
28
28
 
29
29
  spec.add_development_dependency "appraisal", "~> 2.2.0"
30
- spec.add_development_dependency "bundler", "~> 1.9"
30
+ spec.add_development_dependency "bundler", "~> 1.15.0"
31
31
  spec.add_development_dependency "database_cleaner", "~> 1.6.0"
32
32
  spec.add_development_dependency "awesome_print"
33
33
  spec.add_development_dependency "pry"
@@ -6,6 +6,7 @@ require "active_record/connection_adapters/postgresql_adapter"
6
6
 
7
7
  require "jsonb_accessor/version"
8
8
  require "jsonb_accessor/macro"
9
+ require "jsonb_accessor/query_helper"
9
10
  require "jsonb_accessor/query_builder"
10
11
 
11
12
  module JsonbAccessor
@@ -34,7 +34,7 @@ module JsonbAccessor
34
34
  end
35
35
 
36
36
  # Get store keys to default values mapping
37
- store_keys_and_defaults = ::JsonbAccessor::QueryBuilder.convert_keys_to_store_keys(names_and_defaults, public_send(store_key_mapping_method_name))
37
+ store_keys_and_defaults = ::JsonbAccessor::QueryHelper.convert_keys_to_store_keys(names_and_defaults, public_send(store_key_mapping_method_name))
38
38
 
39
39
  # Define jsonb_defaults_mapping_for_<jsonb_attribute>
40
40
  defaults_mapping_method_name = "jsonb_defaults_mapping_for_#{jsonb_attribute}"
@@ -46,7 +46,14 @@ module JsonbAccessor
46
46
  end
47
47
 
48
48
  all_defaults_mapping = public_send(defaults_mapping_method_name)
49
- attribute jsonb_attribute, :jsonb, default: all_defaults_mapping if all_defaults_mapping.present?
49
+ # Fields may have procs as default value. This means `all_defaults_mapping` may contain procs as values. To make this work
50
+ # with the attributes API, we need to wrap `all_defaults_mapping` with a proc itself, making sure it returns a plain hash
51
+ # each time it is evaluated.
52
+ all_defaults_mapping_proc =
53
+ if all_defaults_mapping.present?
54
+ -> { all_defaults_mapping.map { |key, value| [key, value.respond_to?(:call) ? value.call : value] }.to_h }
55
+ end
56
+ attribute jsonb_attribute, :jsonb, default: all_defaults_mapping_proc if all_defaults_mapping_proc.present?
50
57
 
51
58
  # Setters are in a module to allow users to override them and still be able to use `super`.
52
59
  setters = Module.new do
@@ -67,7 +74,7 @@ module JsonbAccessor
67
74
  empty_store_key_attributes = names_to_store_keys.values.each_with_object({}) { |name, defaults| defaults[name] = nil }
68
75
  empty_named_attributes = names_to_store_keys.keys.each_with_object({}) { |name, defaults| defaults[name] = nil }
69
76
 
70
- store_key_attributes = ::JsonbAccessor::QueryBuilder.convert_keys_to_store_keys(value, names_to_store_keys)
77
+ store_key_attributes = ::JsonbAccessor::QueryHelper.convert_keys_to_store_keys(value, names_to_store_keys)
71
78
  write_attribute(jsonb_attribute, empty_store_key_attributes.merge(store_key_attributes))
72
79
 
73
80
  empty_named_attributes.merge(value).each { |name, attribute_value| write_attribute(name, attribute_value) }
@@ -89,13 +96,13 @@ module JsonbAccessor
89
96
 
90
97
  # <jsonb_attribute>_where scope
91
98
  scope("#{jsonb_attribute}_where", lambda do |attributes|
92
- store_key_attributes = ::JsonbAccessor::QueryBuilder.convert_keys_to_store_keys(attributes, all.model.public_send(store_key_mapping_method_name))
99
+ store_key_attributes = ::JsonbAccessor::QueryHelper.convert_keys_to_store_keys(attributes, all.model.public_send(store_key_mapping_method_name))
93
100
  jsonb_where(jsonb_attribute, store_key_attributes)
94
101
  end)
95
102
 
96
103
  # <jsonb_attribute>_where_not scope
97
104
  scope("#{jsonb_attribute}_where_not", lambda do |attributes|
98
- store_key_attributes = ::JsonbAccessor::QueryBuilder.convert_keys_to_store_keys(attributes, all.model.public_send(store_key_mapping_method_name))
105
+ store_key_attributes = ::JsonbAccessor::QueryHelper.convert_keys_to_store_keys(attributes, all.model.public_send(store_key_mapping_method_name))
99
106
  jsonb_where_not(jsonb_attribute, store_key_attributes)
100
107
  end)
101
108
 
@@ -1,147 +1,41 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonbAccessor
4
- GREATER_THAN = ">"
5
- GREATER_THAN_OR_EQUAL_TO = ">="
6
- LESS_THAN = "<"
7
- LESS_THAN_OR_EQUAL_TO = "<="
8
-
9
- NUMBER_OPERATORS_MAP = {
10
- GREATER_THAN => GREATER_THAN,
11
- "greater_than" => GREATER_THAN,
12
- "gt" => GREATER_THAN,
13
- GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO,
14
- "greater_than_or_equal_to" => GREATER_THAN_OR_EQUAL_TO,
15
- "gte" => GREATER_THAN_OR_EQUAL_TO,
16
- LESS_THAN => LESS_THAN,
17
- "less_than" => LESS_THAN,
18
- "lt" => LESS_THAN,
19
- LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO,
20
- "less_than_or_equal_to" => LESS_THAN_OR_EQUAL_TO,
21
- "lte" => LESS_THAN_OR_EQUAL_TO
22
- }.freeze
23
-
24
- NUMBER_OPERATORS = NUMBER_OPERATORS_MAP.keys.freeze
25
-
26
- TIME_OPERATORS_MAP = {
27
- "after" => GREATER_THAN,
28
- "before" => LESS_THAN
29
- }.freeze
30
-
31
- TIME_OPERATORS = TIME_OPERATORS_MAP.keys.freeze
32
-
33
- IS_NUMBER_QUERY_ARGUMENTS = lambda do |arg|
34
- arg.is_a?(Hash) &&
35
- arg.keys.map(&:to_s).all? { |key| JsonbAccessor::NUMBER_OPERATORS.include?(key) }
36
- end
37
-
38
- IS_TIME_QUERY_ARGUMENTS = lambda do |arg|
39
- arg.is_a?(Hash) &&
40
- arg.keys.map(&:to_s).all? { |key| JsonbAccessor::TIME_OPERATORS.include?(key) }
41
- end
42
-
43
- CONVERT_NUMBER_RANGES = lambda do |attributes|
44
- attributes.each_with_object({}) do |(name, value), new_attributes|
45
- is_range = value.is_a?(Range)
46
-
47
- new_attributes[name] = if is_range && value.first.is_a?(Numeric) && value.exclude_end?
48
- { greater_than_or_equal_to: value.first, less_than: value.end }
49
- elsif is_range && value.first.is_a?(Numeric)
50
- { greater_than_or_equal_to: value.first, less_than_or_equal_to: value.end }
51
- else
52
- value
53
- end
54
- end
55
- end
56
-
57
- CONVERT_TIME_RANGES = lambda do |attributes|
58
- attributes.each_with_object({}) do |(name, value), new_attributes|
59
- is_range = value.is_a?(Range)
60
-
61
- if is_range && (value.first.is_a?(Time) || value.first.is_a?(Date))
62
- start_time = value.first
63
- end_time = value.end
64
- new_attributes[name] = { before: end_time, after: start_time }
65
- else
66
- new_attributes[name] = value
67
- end
68
- end
69
- end
70
-
71
- CONVERT_RANGES = lambda do |attributes|
72
- [CONVERT_NUMBER_RANGES, CONVERT_TIME_RANGES].reduce(attributes) do |new_attributes, converter|
73
- converter.call(new_attributes)
74
- end
75
- end
76
-
77
- ORDER_DIRECTIONS = [:asc, :desc, "asc", "desc"].freeze
78
-
79
4
  module QueryBuilder
80
5
  extend ActiveSupport::Concern
81
- InvalidColumnName = Class.new(StandardError)
82
- InvalidFieldName = Class.new(StandardError)
83
- InvalidDirection = Class.new(StandardError)
84
- NotSupported = Class.new(StandardError)
85
-
86
- def self.validate_column_name!(query, column_name)
87
- if query.model.columns.none? { |column| column.name == column_name.to_s }
88
- raise InvalidColumnName, "a column named `#{column_name}` does not exist on the `#{query.model.table_name}` table"
89
- end
90
- end
91
-
92
- def self.validate_field_name!(query, column_name, field_name)
93
- store_keys = query.model.public_send("jsonb_store_key_mapping_for_#{column_name}").values
94
- if store_keys.exclude?(field_name.to_s)
95
- valid_field_names = store_keys.map { |key| "`#{key}`" }.join(", ")
96
- raise InvalidFieldName, "`#{field_name}` is not a valid field name, valid field names include: #{valid_field_names}"
97
- end
98
- end
99
-
100
- def self.validate_direction!(option)
101
- if ORDER_DIRECTIONS.exclude?(option)
102
- raise InvalidDirection, "`#{option}` is not a valid direction for ordering, only `asc` and `desc` are accepted"
103
- end
104
- end
105
-
106
- def self.convert_keys_to_store_keys(attributes, store_key_mapping)
107
- attributes.each_with_object({}) do |(name, value), new_attributes|
108
- store_key = store_key_mapping[name.to_s]
109
- new_attributes[store_key] = value
110
- end
111
- end
112
6
 
113
7
  included do
114
8
  scope(:jsonb_contains, lambda do |column_name, attributes|
115
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
9
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
116
10
  where("#{table_name}.#{column_name} @> (?)::jsonb", attributes.to_json)
117
11
  end)
118
12
 
119
13
  scope(:jsonb_excludes, lambda do |column_name, attributes|
120
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
14
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
121
15
  where.not("#{table_name}.#{column_name} @> (?)::jsonb", attributes.to_json)
122
16
  end)
123
17
 
124
18
  scope(:jsonb_number_where, lambda do |column_name, field_name, given_operator, value|
125
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
126
- operator = JsonbAccessor::NUMBER_OPERATORS_MAP.fetch(given_operator.to_s)
19
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
20
+ operator = JsonbAccessor::QueryHelper::NUMBER_OPERATORS_MAP.fetch(given_operator.to_s)
127
21
  where("(#{table_name}.#{column_name} ->> ?)::float #{operator} ?", field_name, value)
128
22
  end)
129
23
 
130
24
  scope(:jsonb_number_where_not, lambda do |column_name, field_name, given_operator, value|
131
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
132
- operator = JsonbAccessor::NUMBER_OPERATORS_MAP.fetch(given_operator.to_s)
25
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
26
+ operator = JsonbAccessor::QueryHelper::NUMBER_OPERATORS_MAP.fetch(given_operator.to_s)
133
27
  where.not("(#{table_name}.#{column_name} ->> ?)::float #{operator} ?", field_name, value)
134
28
  end)
135
29
 
136
30
  scope(:jsonb_time_where, lambda do |column_name, field_name, given_operator, value|
137
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
138
- operator = JsonbAccessor::TIME_OPERATORS_MAP.fetch(given_operator.to_s)
31
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
32
+ operator = JsonbAccessor::QueryHelper::TIME_OPERATORS_MAP.fetch(given_operator.to_s)
139
33
  where("(#{table_name}.#{column_name} ->> ?)::timestamp #{operator} ?", field_name, value)
140
34
  end)
141
35
 
142
36
  scope(:jsonb_time_where_not, lambda do |column_name, field_name, given_operator, value|
143
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
144
- operator = JsonbAccessor::TIME_OPERATORS_MAP.fetch(given_operator.to_s)
37
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
38
+ operator = JsonbAccessor::QueryHelper::TIME_OPERATORS_MAP.fetch(given_operator.to_s)
145
39
  where.not("(#{table_name}.#{column_name} ->> ?)::timestamp #{operator} ?", field_name, value)
146
40
  end)
147
41
 
@@ -149,11 +43,10 @@ module JsonbAccessor
149
43
  query = all
150
44
  contains_attributes = {}
151
45
 
152
- JsonbAccessor::CONVERT_RANGES.call(attributes).each do |name, value|
153
- case value
154
- when IS_NUMBER_QUERY_ARGUMENTS
46
+ JsonbAccessor::QueryHelper.convert_ranges(attributes).each do |name, value|
47
+ if JsonbAccessor::QueryHelper.number_query_arguments?(value)
155
48
  value.each { |operator, query_value| query = query.jsonb_number_where(column_name, name, operator, query_value) }
156
- when IS_TIME_QUERY_ARGUMENTS
49
+ elsif JsonbAccessor::QueryHelper.time_query_arguments?(value)
157
50
  value.each { |operator, query_value| query = query.jsonb_time_where(column_name, name, operator, query_value) }
158
51
  else
159
52
  contains_attributes[name] = value
@@ -169,13 +62,12 @@ module JsonbAccessor
169
62
 
170
63
  attributes.each do |name, value|
171
64
  if value.is_a?(Range)
172
- raise NotSupported, "`jsonb_where_not` scope does not accept ranges as arguments. Given `#{value}` for `#{name}` field"
65
+ raise JsonbAccessor::QueryHelper::NotSupported, "`jsonb_where_not` scope does not accept ranges as arguments. Given `#{value}` for `#{name}` field"
173
66
  end
174
67
 
175
- case value
176
- when IS_NUMBER_QUERY_ARGUMENTS
68
+ if JsonbAccessor::QueryHelper.number_query_arguments?(value)
177
69
  value.each { |operator, query_value| query = query.jsonb_number_where_not(column_name, name, operator, query_value) }
178
- when IS_TIME_QUERY_ARGUMENTS
70
+ elsif JsonbAccessor::QueryHelper.time_query_arguments?(value)
179
71
  value.each { |operator, query_value| query = query.jsonb_time_where_not(column_name, name, operator, query_value) }
180
72
  else
181
73
  excludes_attributes[name] = value
@@ -186,9 +78,9 @@ module JsonbAccessor
186
78
  end)
187
79
 
188
80
  scope(:jsonb_order, lambda do |column_name, field_name, direction|
189
- JsonbAccessor::QueryBuilder.validate_column_name!(all, column_name)
190
- JsonbAccessor::QueryBuilder.validate_field_name!(all, column_name, field_name)
191
- JsonbAccessor::QueryBuilder.validate_direction!(direction)
81
+ JsonbAccessor::QueryHelper.validate_column_name!(all, column_name)
82
+ JsonbAccessor::QueryHelper.validate_field_name!(all, column_name, field_name)
83
+ JsonbAccessor::QueryHelper.validate_direction!(direction)
192
84
  order("(#{table_name}.#{column_name} -> '#{field_name}') #{direction}")
193
85
  end)
194
86
  end
@@ -0,0 +1,114 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JsonbAccessor
4
+ module QueryHelper
5
+ # Errors
6
+ InvalidColumnName = Class.new(StandardError)
7
+ InvalidFieldName = Class.new(StandardError)
8
+ InvalidDirection = Class.new(StandardError)
9
+ NotSupported = Class.new(StandardError)
10
+
11
+ # Constants
12
+ GREATER_THAN = ">"
13
+ GREATER_THAN_OR_EQUAL_TO = ">="
14
+ LESS_THAN = "<"
15
+ LESS_THAN_OR_EQUAL_TO = "<="
16
+
17
+ NUMBER_OPERATORS_MAP = {
18
+ GREATER_THAN => GREATER_THAN,
19
+ "greater_than" => GREATER_THAN,
20
+ "gt" => GREATER_THAN,
21
+ GREATER_THAN_OR_EQUAL_TO => GREATER_THAN_OR_EQUAL_TO,
22
+ "greater_than_or_equal_to" => GREATER_THAN_OR_EQUAL_TO,
23
+ "gte" => GREATER_THAN_OR_EQUAL_TO,
24
+ LESS_THAN => LESS_THAN,
25
+ "less_than" => LESS_THAN,
26
+ "lt" => LESS_THAN,
27
+ LESS_THAN_OR_EQUAL_TO => LESS_THAN_OR_EQUAL_TO,
28
+ "less_than_or_equal_to" => LESS_THAN_OR_EQUAL_TO,
29
+ "lte" => LESS_THAN_OR_EQUAL_TO
30
+ }.freeze
31
+
32
+ NUMBER_OPERATORS = NUMBER_OPERATORS_MAP.keys.freeze
33
+
34
+ TIME_OPERATORS_MAP = {
35
+ "after" => GREATER_THAN,
36
+ "before" => LESS_THAN
37
+ }.freeze
38
+
39
+ TIME_OPERATORS = TIME_OPERATORS_MAP.keys.freeze
40
+
41
+ ORDER_DIRECTIONS = [:asc, :desc, "asc", "desc"].freeze
42
+
43
+ class << self
44
+ def validate_column_name!(query, column_name)
45
+ if query.model.columns.none? { |column| column.name == column_name.to_s }
46
+ raise InvalidColumnName, "a column named `#{column_name}` does not exist on the `#{query.model.table_name}` table"
47
+ end
48
+ end
49
+
50
+ def validate_field_name!(query, column_name, field_name)
51
+ store_keys = query.model.public_send("jsonb_store_key_mapping_for_#{column_name}").values
52
+ if store_keys.exclude?(field_name.to_s)
53
+ valid_field_names = store_keys.map { |key| "`#{key}`" }.join(", ")
54
+ raise InvalidFieldName, "`#{field_name}` is not a valid field name, valid field names include: #{valid_field_names}"
55
+ end
56
+ end
57
+
58
+ def validate_direction!(option)
59
+ if ORDER_DIRECTIONS.exclude?(option)
60
+ raise InvalidDirection, "`#{option}` is not a valid direction for ordering, only `asc` and `desc` are accepted"
61
+ end
62
+ end
63
+
64
+ def convert_keys_to_store_keys(attributes, store_key_mapping)
65
+ attributes.each_with_object({}) do |(name, value), new_attributes|
66
+ store_key = store_key_mapping[name.to_s]
67
+ new_attributes[store_key] = value
68
+ end
69
+ end
70
+
71
+ def number_query_arguments?(arg)
72
+ arg.is_a?(Hash) && arg.keys.map(&:to_s).all? { |key| NUMBER_OPERATORS.include?(key) }
73
+ end
74
+
75
+ def time_query_arguments?(arg)
76
+ arg.is_a?(Hash) && arg.keys.map(&:to_s).all? { |key| TIME_OPERATORS.include?(key) }
77
+ end
78
+
79
+ def convert_number_ranges(attributes)
80
+ attributes.each_with_object({}) do |(name, value), new_attributes|
81
+ is_range = value.is_a?(Range)
82
+
83
+ new_attributes[name] = if is_range && value.first.is_a?(Numeric) && value.exclude_end?
84
+ { greater_than_or_equal_to: value.first, less_than: value.end }
85
+ elsif is_range && value.first.is_a?(Numeric)
86
+ { greater_than_or_equal_to: value.first, less_than_or_equal_to: value.end }
87
+ else
88
+ value
89
+ end
90
+ end
91
+ end
92
+
93
+ def convert_time_ranges(attributes)
94
+ attributes.each_with_object({}) do |(name, value), new_attributes|
95
+ is_range = value.is_a?(Range)
96
+
97
+ if is_range && (value.first.is_a?(Time) || value.first.is_a?(Date))
98
+ start_time = value.first
99
+ end_time = value.end
100
+ new_attributes[name] = { before: end_time, after: start_time }
101
+ else
102
+ new_attributes[name] = value
103
+ end
104
+ end
105
+ end
106
+
107
+ def convert_ranges(attributes)
108
+ %i[convert_number_ranges convert_time_ranges].reduce(attributes) do |new_attributes, converter_method|
109
+ public_send(converter_method, new_attributes)
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JsonbAccessor
4
- VERSION = "1.0.0.beta.6"
4
+ VERSION = "1.0.0.beta.7"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsonb_accessor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta.6
4
+ version: 1.0.0.beta.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Crismali
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2017-05-09 00:00:00.000000000 Z
13
+ date: 2017-08-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -74,14 +74,14 @@ dependencies:
74
74
  requirements:
75
75
  - - "~>"
76
76
  - !ruby/object:Gem::Version
77
- version: '1.9'
77
+ version: 1.15.0
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '1.9'
84
+ version: 1.15.0
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: database_cleaner
87
87
  requirement: !ruby/object:Gem::Requirement
@@ -242,6 +242,7 @@ files:
242
242
  - lib/jsonb_accessor.rb
243
243
  - lib/jsonb_accessor/macro.rb
244
244
  - lib/jsonb_accessor/query_builder.rb
245
+ - lib/jsonb_accessor/query_helper.rb
245
246
  - lib/jsonb_accessor/version.rb
246
247
  homepage: https://github.com/devmynd/jsonb_accessor
247
248
  licenses: