graphql-rails-api 0.9.2 → 0.9.3.pre.fix
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 +4 -4
- data/lib/graphql/hydrate_query.rb +43 -41
- data/lib/graphql/rails/api/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28fb07b00c4ddc6fab6260937a8ab6b5edd025ae6703ab2334a3fba30e56619c
|
4
|
+
data.tar.gz: 5991b8d3475a620d0c4a0a6106795b8559123cfc65faf6f9cb3a5f44292778ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95f60329781d38bf3275a24617868a2baa0fa82812fb4ecd5b79c36f45bbc9ad69a8f98270c797d76df384719417a60fb27a6cd31350c5fb1baa1ceecaae9ceb
|
7
|
+
data.tar.gz: 9c76d727e713a14110ea7e77314f446d5c996719abacd228f05202c8c1b7f379e9c1bdb2e67bdc6173bcfc2a6a84a704de6e32d60dd4155f68f769619aaeb822
|
@@ -40,7 +40,7 @@ module Graphql
|
|
40
40
|
transform_filter if @filter.present?
|
41
41
|
transform_order if @order_by.present?
|
42
42
|
|
43
|
-
@total = @model.
|
43
|
+
@total = @model.count
|
44
44
|
@model = @model.limit(@per_page)
|
45
45
|
@model = @model.offset(@per_page * (@page - 1))
|
46
46
|
|
@@ -48,7 +48,7 @@ module Graphql
|
|
48
48
|
data: deep_pluck_to_structs(@context&.irep_node&.typed_children&.values&.first.try(:[], "data")),
|
49
49
|
total_count: @total,
|
50
50
|
per_page: @per_page,
|
51
|
-
page: @page
|
51
|
+
page: @page
|
52
52
|
)
|
53
53
|
end
|
54
54
|
|
@@ -57,25 +57,28 @@ module Graphql
|
|
57
57
|
def transform_order
|
58
58
|
return if @order_by.blank?
|
59
59
|
|
60
|
-
|
61
|
-
column = @order_by.split(" ").first.strip
|
60
|
+
@order_by.split(",").each do |order|
|
62
61
|
|
63
|
-
|
64
|
-
|
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
|
62
|
+
sign = order.split(" ").last.downcase == "desc" ? "desc" : "asc"
|
63
|
+
column = order.split(" ").first.strip
|
74
64
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
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
|
76
|
+
|
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
|
79
82
|
end
|
80
83
|
end
|
81
84
|
|
@@ -93,33 +96,32 @@ module Graphql
|
|
93
96
|
if @need_distinct_results
|
94
97
|
@model = @model.distinct
|
95
98
|
end
|
96
|
-
|
97
99
|
rescue RKelly::SyntaxError => e
|
98
100
|
raise GraphQL::ExecutionError, "Invalid filter: #{e.message}"
|
99
101
|
end
|
100
102
|
|
101
103
|
def handle_node(node, model)
|
102
|
-
if node.
|
104
|
+
if node.instance_of?(RKelly::Nodes::ParentheticalNode)
|
103
105
|
handle_ParentheticalNode(node, model)
|
104
|
-
elsif node.
|
106
|
+
elsif node.instance_of?(RKelly::Nodes::LogicalAndNode)
|
105
107
|
handle_LogicalAndNode(node, model)
|
106
|
-
elsif node.
|
108
|
+
elsif node.instance_of?(RKelly::Nodes::LogicalOrNode)
|
107
109
|
handle_LogicalOrNode(node, model)
|
108
|
-
elsif node.
|
110
|
+
elsif node.instance_of?(RKelly::Nodes::NotEqualNode)
|
109
111
|
handle_NotEqualNode(node, model)
|
110
|
-
elsif node.
|
112
|
+
elsif node.instance_of?(RKelly::Nodes::EqualNode)
|
111
113
|
handle_EqualNode(node, model)
|
112
|
-
elsif node.
|
114
|
+
elsif node.instance_of?(RKelly::Nodes::StrictEqualNode)
|
113
115
|
handle_StrictEqualNode(node, model)
|
114
|
-
elsif node.
|
116
|
+
elsif node.instance_of?(RKelly::Nodes::NotStrictEqualNode)
|
115
117
|
handle_NotStrictEqualNode(node, model)
|
116
|
-
elsif node.
|
118
|
+
elsif node.instance_of?(RKelly::Nodes::GreaterOrEqualNode)
|
117
119
|
handle_GreaterOrEqualNode(node, model)
|
118
|
-
elsif node.
|
120
|
+
elsif node.instance_of?(RKelly::Nodes::LessOrEqualNode)
|
119
121
|
handle_LessOrEqualNode(node, model)
|
120
|
-
elsif node.
|
122
|
+
elsif node.instance_of?(RKelly::Nodes::LessNode)
|
121
123
|
handle_LessNode(node, model)
|
122
|
-
elsif node.
|
124
|
+
elsif node.instance_of?(RKelly::Nodes::GreaterNode)
|
123
125
|
handle_GreaterNode(node, model)
|
124
126
|
else
|
125
127
|
raise GraphQL::ExecutionError, "Invalid filter: #{node.class} unknown operator"
|
@@ -162,9 +164,9 @@ module Graphql
|
|
162
164
|
end
|
163
165
|
|
164
166
|
def handle_operator_node(node, model)
|
165
|
-
if node.left.
|
167
|
+
if node.left.instance_of?(RKelly::Nodes::DotAccessorNode)
|
166
168
|
handle_dot_accessor_node(node, model)
|
167
|
-
elsif node.left.
|
169
|
+
elsif node.left.instance_of?(RKelly::Nodes::ResolveNode)
|
168
170
|
handle_resolve_node(node, model)
|
169
171
|
else
|
170
172
|
raise GraphQL::ExecutionError, "Invalid left value: #{node.left.class}"
|
@@ -172,7 +174,7 @@ module Graphql
|
|
172
174
|
end
|
173
175
|
|
174
176
|
def value_from_node(node, sym_type, sym, model)
|
175
|
-
if node.
|
177
|
+
if node.instance_of?(RKelly::Nodes::StringNode)
|
176
178
|
val = node.value.gsub(/^'|'$|^"|"$/, "")
|
177
179
|
if sym_type == :datetime
|
178
180
|
DateTime.parse(val)
|
@@ -190,13 +192,13 @@ module Graphql
|
|
190
192
|
else
|
191
193
|
val
|
192
194
|
end
|
193
|
-
elsif node.
|
195
|
+
elsif node.instance_of?(RKelly::Nodes::NumberNode)
|
194
196
|
node.value
|
195
|
-
elsif node.
|
197
|
+
elsif node.instance_of?(RKelly::Nodes::TrueNode)
|
196
198
|
true
|
197
|
-
elsif node.
|
199
|
+
elsif node.instance_of?(RKelly::Nodes::FalseNode)
|
198
200
|
false
|
199
|
-
elsif node.
|
201
|
+
elsif node.instance_of?(RKelly::Nodes::NullNode)
|
200
202
|
nil
|
201
203
|
else
|
202
204
|
raise GraphQL::ExecutionError, "Invalid filter: #{node} unknown rvalue node"
|
@@ -204,7 +206,7 @@ module Graphql
|
|
204
206
|
end
|
205
207
|
|
206
208
|
def sanitize_sql_like(value)
|
207
|
-
ActiveRecord::Base
|
209
|
+
ActiveRecord::Base.sanitize_sql_like(value)
|
208
210
|
end
|
209
211
|
|
210
212
|
def handle_NotEqualNode(node, model)
|
@@ -335,7 +337,7 @@ module Graphql
|
|
335
337
|
next arr << v if parent_class.new.attributes.key?(v)
|
336
338
|
|
337
339
|
klass = evaluate_model(parent_class, k)
|
338
|
-
arr << {
|
340
|
+
arr << {k.to_sym => hash_to_array_of_hashes(v, klass)} if klass.present? && v.present?
|
339
341
|
end
|
340
342
|
end
|
341
343
|
|
@@ -343,7 +345,7 @@ module Graphql
|
|
343
345
|
hash.select { |k, _| k.ends_with?("_ids") }.each do |(k, _)|
|
344
346
|
collection_name = k.gsub("_ids", "").pluralize
|
345
347
|
if hash[collection_name].blank?
|
346
|
-
hash[collection_name] = {
|
348
|
+
hash[collection_name] = {"id" => nil}
|
347
349
|
else
|
348
350
|
hash[collection_name]["id"] = nil
|
349
351
|
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.
|
4
|
+
version: 0.9.3.pre.fix
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- poilon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-04-14 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:
|
115
|
+
version: 1.3.1
|
116
116
|
requirements: []
|
117
|
-
rubygems_version: 3.
|
117
|
+
rubygems_version: 3.1.2
|
118
118
|
signing_key:
|
119
119
|
specification_version: 4
|
120
120
|
summary: Graphql rails api framework to create easily graphql api with rails
|