graphql-rails-api 0.9.3.pre.fix → 0.9.3.2

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: 28fb07b00c4ddc6fab6260937a8ab6b5edd025ae6703ab2334a3fba30e56619c
4
- data.tar.gz: 5991b8d3475a620d0c4a0a6106795b8559123cfc65faf6f9cb3a5f44292778ec
3
+ metadata.gz: c62ea3022bb2b2681bb9dfd2ca19f6acabe9f83059a97e8360a1fca53b6c934a
4
+ data.tar.gz: 38b9503103caddd4afd4e13076c96b01fa425d83703cf3f9a68c775f95e9828b
5
5
  SHA512:
6
- metadata.gz: 95f60329781d38bf3275a24617868a2baa0fa82812fb4ecd5b79c36f45bbc9ad69a8f98270c797d76df384719417a60fb27a6cd31350c5fb1baa1ceecaae9ceb
7
- data.tar.gz: 9c76d727e713a14110ea7e77314f446d5c996719abacd228f05202c8c1b7f379e9c1bdb2e67bdc6173bcfc2a6a84a704de6e32d60dd4155f68f769619aaeb822
6
+ metadata.gz: a30f00567812cb00547539c9c581f4863685f57f1dc161757c7abd575a5627105aaef005e29ac28fa2fbdecb9866448930f5855d0d84d793302442673978699e
7
+ data.tar.gz: 556e02f77b4bc35d3791f34726e72e3690ad25b0ee418c795857f60810e0d948ca2b2a0da545d00dcf6bd331b806fef8589efba44d95b739ce81d39f4f7c1145
@@ -57,28 +57,25 @@ module Graphql
57
57
  def transform_order
58
58
  return if @order_by.blank?
59
59
 
60
- @order_by.split(",").each do |order|
61
-
62
- sign = order.split(" ").last.downcase == "desc" ? "desc" : "asc"
63
- column = order.split(" ").first.strip
64
-
65
- if column.include?(".")
66
- associated_model = column.split(".").first
67
- accessor = column.split(".").last
68
- assoc = get_assoc!(@model, associated_model)
69
- field_type = get_field_type!(assoc.klass, accessor)
70
- @model = @model.left_joins(associated_model.to_sym)
71
- ordered_field = "#{associated_model.pluralize}.#{accessor}"
72
- else
73
- field_type = get_field_type!(@model, column)
74
- ordered_field = "#{model_name.pluralize}.#{column}"
75
- end
60
+ sign = @order_by.split(" ").last.downcase == "desc" ? "desc" : "asc"
61
+ column = @order_by.split(" ").first.strip
62
+
63
+ if column.include?(".")
64
+ associated_model = column.split(".").first
65
+ accessor = column.split(".").last
66
+ assoc = get_assoc!(@model, associated_model)
67
+ field_type = get_field_type!(assoc.klass, accessor)
68
+ @model = @model.left_joins(associated_model.to_sym)
69
+ ordered_field = "#{associated_model.pluralize}.#{accessor}"
70
+ else
71
+ field_type = get_field_type!(@model, column)
72
+ ordered_field = "#{model_name.pluralize}.#{column}"
73
+ end
76
74
 
77
- @model = if %i[string text].include?(field_type)
78
- @model.order(Arel.sql("upper(#{ordered_field}) #{sign}"))
79
- else
80
- @model.order(Arel.sql("#{ordered_field} #{sign}"))
81
- end
75
+ @model = if %i[string text].include?(field_type)
76
+ @model.order(Arel.sql("#{ordered_field} #{sign}"))
77
+ else
78
+ @model.order(Arel.sql("#{ordered_field} #{sign}"))
82
79
  end
83
80
  end
84
81
 
@@ -123,6 +120,8 @@ module Graphql
123
120
  handle_LessNode(node, model)
124
121
  elsif node.instance_of?(RKelly::Nodes::GreaterNode)
125
122
  handle_GreaterNode(node, model)
123
+ elsif node.instance_of?(RKelly::Nodes::ModulusNode)
124
+ handle_ModulusNode(node, model)
126
125
  else
127
126
  raise GraphQL::ExecutionError, "Invalid filter: #{node.class} unknown operator"
128
127
  end
@@ -140,6 +139,37 @@ module Graphql
140
139
  handle_node(node.left, model).or(handle_node(node.value, model))
141
140
  end
142
141
 
142
+ def handle_ModulusNode(node, model)
143
+ arel_field, model, type, value = handle_operator_node(node, model)
144
+ arel_field.name = arel_field.name.underscore
145
+
146
+ if value.nil?
147
+ model.where(arel_field.eq(nil))
148
+ elsif type == :text || type == :string
149
+ model.where(arel_field.matches("%" + sanitize_sql_like(value) + "%"))
150
+ elsif type == :datetime
151
+ if value.instance_of?(DateTime)
152
+ model.where(arel_field.gteq(value).and(arel_field.lteq(value + 1.day)))
153
+ else
154
+ model.where(
155
+ Arel::Nodes::NamedFunction.new(
156
+ "CAST",
157
+ [Arel::Nodes::As.new(arel_field, Arel::Nodes::SqlLiteral.new("text"))]
158
+ ).matches("%" + sanitize_sql_like(value) + "%")
159
+ )
160
+ end
161
+ elsif type == :uuid
162
+ model.where(
163
+ Arel::Nodes::NamedFunction.new(
164
+ "CAST",
165
+ [Arel::Nodes::As.new(arel_field, Arel::Nodes::SqlLiteral.new("text"))]
166
+ ).matches("%" + sanitize_sql_like(value) + "%")
167
+ )
168
+ else
169
+ model.where(arel_field.eq(value))
170
+ end
171
+ end
172
+
143
173
  def handle_dot_accessor_node(node, model)
144
174
  associated_model = node.left.value.value
145
175
  accessor = node.left.accessor
@@ -1,7 +1,7 @@
1
1
  module Graphql
2
2
  module Rails
3
3
  module Api
4
- VERSION = "0.9.3-fix".freeze
4
+ VERSION = "0.9.3.2".freeze
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphql-rails-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3.pre.fix
4
+ version: 0.9.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - poilon
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-14 00:00:00.000000000 Z
11
+ date: 2024-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql
@@ -110,11 +110,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
110
  version: '0'
111
111
  required_rubygems_version: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - ">"
113
+ - - ">="
114
114
  - !ruby/object:Gem::Version
115
- version: 1.3.1
115
+ version: '0'
116
116
  requirements: []
117
- rubygems_version: 3.1.2
117
+ rubygems_version: 3.3.7
118
118
  signing_key:
119
119
  specification_version: 4
120
120
  summary: Graphql rails api framework to create easily graphql api with rails