graphiti_gql 0.2.20 → 0.2.21

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
  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