graphiti_gql 0.2.20 → 0.2.21

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17c54a15f86e3855f814dcea6a7093ceb0b0252de6685c57017a19f3c83160db
4
- data.tar.gz: e0f018dbe747eaa43401f3f02ef77a526e3f5f2a0dad8964dd138bc083a38ad6
3
+ metadata.gz: 933f1a2f88f12ad842f261023b05c8f5cc764ffbe61e7c6686ad88e2d013f8c8
4
+ data.tar.gz: 89f3c1c9fd1dcaa5160e1b0f9df9e81c0ff869a55d2842db365a1dfd14c942fe
5
5
  SHA512:
6
- metadata.gz: b863f5de471a4991d28f35c544567cf7420b78852c202c527b79399deb7e67f7c03e4f539cd628e9827354670e259ba44a8762191aaa88a97e3c474d753ff0de
7
- data.tar.gz: e857d78632c3055263d4ae6287ab30836752c28cdd41836f411a82f4b64119b1420a79447c5a042c2829d24b57eec040d14a1eb9d2705aacc70935612ce5d5f8
6
+ metadata.gz: 2de7c71483561731e957887da213322caf2c10b9d6836660b15ecd6572c743dffc1f34de139d15ff05dae13392b28186e35b01a2ee409cbe5c22f86c4a75066e
7
+ data.tar.gz: 973e35034e8c7a2b01eb5301f8db86df99a1631adfadf35e6e608f95fa31aec08d89da68df8833edc460af5525a8c3e240ff70d3576fc5180ef98614e87f58d3
@@ -74,6 +74,7 @@ module GraphitiGql
74
74
 
75
75
  def node(id = nil)
76
76
  if @resource.singular
77
+ data # fire query
77
78
  Node.new(underscore(data[data.keys.first]), @resource)
78
79
  else
79
80
  nodes.find { |n| n.id == id.to_s }
@@ -269,7 +269,7 @@ module GraphitiGql
269
269
  module ActiveRecordAdapterExtras
270
270
  extend ActiveSupport::Concern
271
271
 
272
- included do
272
+ prepended do
273
273
  alias_method :filter_precise_datetime_lt, :filter_lt
274
274
  alias_method :filter_precise_datetime_lte, :filter_lte
275
275
  alias_method :filter_precise_datetime_gt, :filter_gt
@@ -277,16 +277,59 @@ module GraphitiGql
277
277
  alias_method :filter_precise_datetime_eq, :filter_eq
278
278
  alias_method :filter_precise_datetime_not_eq, :filter_not_eq
279
279
  end
280
+
281
+ # TODO: integration specs mysql vs postgres for case sensitivity
282
+ def mysql?(scope)
283
+ mysql = ActiveRecord::ConnectionAdapters::Mysql2Adapter
284
+ scope.model.connection.is_a?(mysql)
285
+ end
286
+
287
+ def filter_string_eq(scope, attribute, value, is_not: false)
288
+ if mysql?(scope)
289
+ clause = { attribute => value }
290
+ is_not ? scope.where.not(clause) : scope.where(clause)
291
+ else
292
+ # og behavior
293
+ column = column_for(scope, attribute)
294
+ clause = column.lower.eq_any(value.map(&:downcase))
295
+ end
296
+ end
297
+
298
+ def filter_string_eql(scope, attribute, value, is_not: false)
299
+ if mysql?(scope)
300
+ value = "BINARY #{value}"
301
+ end
302
+ # og behavior
303
+ clause = {attribute => value}
304
+ is_not ? scope.where.not(clause) : scope.where(clause)
305
+ end
306
+
307
+ def sanitized_like_for(scope, attribute, value, &block)
308
+ escape_char = "\\"
309
+ column = column_for(scope, attribute)
310
+ map = value.map { |v|
311
+ v = v.downcase unless mysql?(scope)
312
+ v = Sanitizer.sanitize_like(v, escape_char)
313
+ block.call v
314
+ }
315
+ arel = column
316
+ arel = arel.lower unless mysql?(scope)
317
+ arel.matches_any(map, escape_char, true)
318
+ end
280
319
  end
281
320
  if defined?(Graphiti::Adapters::ActiveRecord)
282
- Graphiti::Adapters::ActiveRecord.send(:include, ActiveRecordAdapterExtras)
321
+ Graphiti::Adapters::ActiveRecord.send(:prepend, ActiveRecordAdapterExtras)
283
322
  end
284
323
 
285
324
  Graphiti::Adapters::Abstract.class_eval do
286
325
  class << self
287
326
  alias :old_default_operators :default_operators
288
327
  def default_operators
289
- old_default_operators.merge(precise_datetime: numerical_operators)
328
+ old_default_operators.merge({
329
+ precise_datetime: numerical_operators,
330
+ string_enum: [:eq, :not_eq],
331
+ integer_enum: [:eq, :not_eq],
332
+ })
290
333
  end
291
334
  end
292
335
  end
@@ -1,3 +1,3 @@
1
1
  module GraphitiGql
2
- VERSION = "0.2.20"
2
+ VERSION = "0.2.21"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphiti_gql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.20
4
+ version: 0.2.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-08-01 00:00:00.000000000 Z
11
+ date: 2022-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql