cm-graphql 0.0.6 → 0.0.7
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/.github/CODEOWNERS +1 -0
- data/.gitignore +1 -0
- data/Gemfile.lock +24 -18
- data/app/graphql/types/base_connection.rb +29 -0
- data/app/graphql/types/inputs/image_resolution.rb +12 -0
- data/app/graphql/types/objects/base/attachment_type.rb +18 -7
- data/cm-graphql.gemspec +4 -4
- data/config/initializers/active_record_extension.rb +2 -0
- data/lib/generators/cm_graphql/add_graphql_generator.rb +1 -0
- data/lib/generators/cm_graphql/templates/base_connection.rb +29 -0
- metadata +9 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bfe03ea1105356f62c221657ccf7e1ac08f138cc537a1e28bf70f9ad1aa0e0b7
|
4
|
+
data.tar.gz: 8275b35c3ba06d16d1be8a32ea6fd0e528c9a6db7c63793d84f2d1e65d62a734
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 742fa1b707f8fd4e726879779293563da46f8c901f64987fd0897d0ccb6aafcf60a9fb010aa7e58d109da244584bbdc5074ac2d8ef142f6bfdc5c5727b3989da
|
7
|
+
data.tar.gz: 7ee1c3308c49eb9f5b14ce47c2b2d710160c8087b2bc645326ffb3e3a6b355e68614ca7856879659a14b546225dc19730dd13f22edfd311f0314b1d1f05b4811
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @Mahaveer1141 @anbublacky @mikevic
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
.idea
|
data/Gemfile.lock
CHANGED
@@ -2,9 +2,9 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
cm-graphql (0.0.6)
|
5
|
-
graphiql-rails (
|
6
|
-
graphql (
|
7
|
-
graphql-rails_logger (
|
5
|
+
graphiql-rails (>= 1.9)
|
6
|
+
graphql (>= 2.2.5)
|
7
|
+
graphql-rails_logger (>= 1.2.4)
|
8
8
|
kaminari (~> 1.2, >= 1.2.2)
|
9
9
|
|
10
10
|
GEM
|
@@ -45,24 +45,26 @@ GEM
|
|
45
45
|
base64 (0.2.0)
|
46
46
|
bigdecimal (3.1.8)
|
47
47
|
builder (3.3.0)
|
48
|
-
concurrent-ruby (1.3.
|
48
|
+
concurrent-ruby (1.3.4)
|
49
49
|
connection_pool (2.4.1)
|
50
50
|
crass (1.0.6)
|
51
51
|
drb (2.2.1)
|
52
|
-
erubi (1.
|
53
|
-
|
52
|
+
erubi (1.13.0)
|
53
|
+
fiber-storage (1.0.0)
|
54
|
+
graphiql-rails (1.10.1)
|
54
55
|
railties
|
55
|
-
graphql (2.3.
|
56
|
+
graphql (2.3.17)
|
56
57
|
base64
|
58
|
+
fiber-storage
|
57
59
|
graphql-rails_logger (1.2.4)
|
58
60
|
actionpack (> 5.0)
|
59
61
|
activesupport (> 5.0)
|
60
62
|
railties (> 5.0)
|
61
63
|
rouge (~> 3.0)
|
62
|
-
i18n (1.14.
|
64
|
+
i18n (1.14.6)
|
63
65
|
concurrent-ruby (~> 1.0)
|
64
66
|
io-console (0.7.2)
|
65
|
-
irb (1.
|
67
|
+
irb (1.14.1)
|
66
68
|
rdoc (>= 4.0.0)
|
67
69
|
reline (>= 0.4.2)
|
68
70
|
kaminari (1.2.2)
|
@@ -80,14 +82,18 @@ GEM
|
|
80
82
|
loofah (2.22.0)
|
81
83
|
crass (~> 1.0.2)
|
82
84
|
nokogiri (>= 1.12.0)
|
83
|
-
|
85
|
+
mini_portile2 (2.8.7)
|
86
|
+
minitest (5.25.1)
|
84
87
|
mutex_m (0.2.0)
|
85
|
-
nokogiri (1.16.
|
88
|
+
nokogiri (1.16.7)
|
89
|
+
mini_portile2 (~> 2.8.2)
|
90
|
+
racc (~> 1.4)
|
91
|
+
nokogiri (1.16.7-arm64-darwin)
|
86
92
|
racc (~> 1.4)
|
87
93
|
psych (5.1.2)
|
88
94
|
stringio
|
89
|
-
racc (1.8.
|
90
|
-
rack (3.
|
95
|
+
racc (1.8.1)
|
96
|
+
rack (3.1.7)
|
91
97
|
rack-session (2.0.0)
|
92
98
|
rack (>= 3.0.0)
|
93
99
|
rack-test (2.1.0)
|
@@ -113,16 +119,16 @@ GEM
|
|
113
119
|
rake (13.2.1)
|
114
120
|
rdoc (6.7.0)
|
115
121
|
psych (>= 4.0.0)
|
116
|
-
reline (0.5.
|
122
|
+
reline (0.5.10)
|
117
123
|
io-console (~> 0.5)
|
118
124
|
rouge (3.30.0)
|
119
|
-
stringio (3.1.
|
120
|
-
thor (1.3.
|
125
|
+
stringio (3.1.1)
|
126
|
+
thor (1.3.2)
|
121
127
|
timeout (0.4.1)
|
122
128
|
tzinfo (2.0.6)
|
123
129
|
concurrent-ruby (~> 1.0)
|
124
|
-
webrick (1.8.
|
125
|
-
zeitwerk (2.6.
|
130
|
+
webrick (1.8.2)
|
131
|
+
zeitwerk (2.6.18)
|
126
132
|
|
127
133
|
PLATFORMS
|
128
134
|
arm64-darwin-20
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Types
|
2
|
+
class BaseConnection < Types::BaseObject
|
3
|
+
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
4
|
+
include GraphQL::Types::Relay::ConnectionBehaviors
|
5
|
+
|
6
|
+
field :total_count, Integer, "Total # of objects returned from this Plural Query", null: false
|
7
|
+
def total_count
|
8
|
+
object.nodes&.count
|
9
|
+
end
|
10
|
+
|
11
|
+
field :total_page_count, Integer, "Total # of pages, based on total count and pagesize", null: false
|
12
|
+
def total_page_count
|
13
|
+
return 1 unless object.nodes&.count&.positive?
|
14
|
+
# get total count and create array with total count as first item
|
15
|
+
my_total_count = object.nodes&.count
|
16
|
+
possible_page_sizes = [my_total_count]
|
17
|
+
|
18
|
+
# add first and last argument counts to the array if they exist
|
19
|
+
possible_page_sizes.push(object.arguments[:first]) if object.arguments[:first]
|
20
|
+
possible_page_sizes.push(object.arguments[:last]) if object.arguments[:last]
|
21
|
+
|
22
|
+
# get the smallest of the array items
|
23
|
+
actual_page_size = possible_page_sizes.min
|
24
|
+
|
25
|
+
# return the total_count divided by the page size, rounded up
|
26
|
+
(my_total_count / actual_page_size.to_f).ceil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Types
|
2
|
+
module Inputs
|
3
|
+
class ImageResolution < Base::Filter
|
4
|
+
graphql_name 'ImageResolution'
|
5
|
+
|
6
|
+
description 'Additional attributes needed for Image Resolution'
|
7
|
+
|
8
|
+
argument :width, Integer, nil, required: true
|
9
|
+
argument :height, Integer, nil, required: true
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -2,7 +2,9 @@ module Types::Objects::Base
|
|
2
2
|
class AttachmentType < Types::BaseObject
|
3
3
|
field :id, Int, nil, null: false
|
4
4
|
field :filename, String, nil, null: false
|
5
|
-
field :url, String, nil, null: false
|
5
|
+
field :url, String, nil, null: false do
|
6
|
+
argument :resolution, Types::Inputs::ImageResolution, required: false, default_value: nil
|
7
|
+
end
|
6
8
|
field :base64, String, nil, null: false
|
7
9
|
|
8
10
|
def id
|
@@ -21,13 +23,22 @@ module Types::Objects::Base
|
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
24
|
-
def url
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def url(resolution:)
|
27
|
+
resized_image = resize_image(resolution&.width, resolution&.height, object)
|
28
|
+
if resized_image.class.eql?(ActiveStorage::Variant) || resized_image.class.eql?(ActiveStorage::VariantWithRecord)
|
29
|
+
Rails.application.routes.url_helpers.rails_representation_url(resized_image)
|
30
|
+
elsif defined?(resized_image.service_url)
|
31
|
+
resized_image.service_url
|
32
|
+
else
|
33
|
+
resized_image.url
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def resize_image(width, height, attachment)
|
38
|
+
if width.present? && height.present? && (attachment.attached? && attachment.content_type.include?('image'))
|
39
|
+
attachment.variant(resize_to_fill: [width, height])
|
29
40
|
else
|
30
|
-
|
41
|
+
attachment
|
31
42
|
end
|
32
43
|
end
|
33
44
|
|
data/cm-graphql.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'cm-graphql'
|
5
|
-
spec.version = '0.0.
|
5
|
+
spec.version = '0.0.7'
|
6
6
|
spec.date = '2022-09-14'
|
7
7
|
spec.summary = 'A gem to setup grapqhl basics like pagination, file upload'
|
8
8
|
spec.description = 'A gem to setup grapqhl basics like pagination, file upload'
|
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ['lib']
|
19
19
|
spec.required_ruby_version = '>= 3.0.0'
|
20
20
|
|
21
|
-
spec.add_runtime_dependency 'graphiql-rails', '
|
22
|
-
spec.add_runtime_dependency 'graphql', '
|
23
|
-
spec.add_runtime_dependency 'graphql-rails_logger', '
|
21
|
+
spec.add_runtime_dependency 'graphiql-rails', '>= 1.9'
|
22
|
+
spec.add_runtime_dependency 'graphql', '>= 2.2.5'
|
23
|
+
spec.add_runtime_dependency 'graphql-rails_logger', '>= 1.2.4'
|
24
24
|
spec.add_runtime_dependency 'kaminari', '~> 1.2', '>= 1.2.2'
|
25
25
|
end
|
@@ -8,6 +8,7 @@ module CmGraphql
|
|
8
8
|
def add_graphql
|
9
9
|
generate 'graphql:install'
|
10
10
|
template 'graphql_schema.rb', "app/graphql/#{Rails.application.class.module_parent_name.underscore}_schema.rb"
|
11
|
+
copy_file 'base_connection.rb', 'app/graphql/types/base_connection.rb'
|
11
12
|
gsub_file 'app/controllers/graphql_controller.rb', '# protect_from_forgery with: :null_session', 'protect_from_forgery with: :null_session'
|
12
13
|
end
|
13
14
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Types
|
2
|
+
class BaseConnection < Types::BaseObject
|
3
|
+
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
4
|
+
include GraphQL::Types::Relay::ConnectionBehaviors
|
5
|
+
|
6
|
+
field :total_count, Integer, "Total # of objects returned from this Plural Query", null: false
|
7
|
+
def total_count
|
8
|
+
object.nodes&.count
|
9
|
+
end
|
10
|
+
|
11
|
+
field :total_page_count, Integer, "Total # of pages, based on total count and pagesize", null: false
|
12
|
+
def total_page_count
|
13
|
+
return 1 unless object.nodes&.count&.positive?
|
14
|
+
# get total count and create array with total count as first item
|
15
|
+
my_total_count = object.nodes&.count
|
16
|
+
possible_page_sizes = [my_total_count]
|
17
|
+
|
18
|
+
# add first and last argument counts to the array if they exist
|
19
|
+
possible_page_sizes.push(object.arguments[:first]) if object.arguments[:first]
|
20
|
+
possible_page_sizes.push(object.arguments[:last]) if object.arguments[:last]
|
21
|
+
|
22
|
+
# get the smallest of the array items
|
23
|
+
actual_page_size = possible_page_sizes.min
|
24
|
+
|
25
|
+
# return the total_count divided by the page size, rounded up
|
26
|
+
(my_total_count / actual_page_size.to_f).ceil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cm-graphql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anbazhagan Palani
|
@@ -14,23 +14,20 @@ dependencies:
|
|
14
14
|
name: graphiql-rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.9'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.9'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: graphql
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '2.2'
|
34
31
|
- - ">="
|
35
32
|
- !ruby/object:Gem::Version
|
36
33
|
version: 2.2.5
|
@@ -38,9 +35,6 @@ dependencies:
|
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '2.2'
|
44
38
|
- - ">="
|
45
39
|
- !ruby/object:Gem::Version
|
46
40
|
version: 2.2.5
|
@@ -48,9 +42,6 @@ dependencies:
|
|
48
42
|
name: graphql-rails_logger
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '1.2'
|
54
45
|
- - ">="
|
55
46
|
- !ruby/object:Gem::Version
|
56
47
|
version: 1.2.4
|
@@ -58,9 +49,6 @@ dependencies:
|
|
58
49
|
prerelease: false
|
59
50
|
version_requirements: !ruby/object:Gem::Requirement
|
60
51
|
requirements:
|
61
|
-
- - "~>"
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '1.2'
|
64
52
|
- - ">="
|
65
53
|
- !ruby/object:Gem::Version
|
66
54
|
version: 1.2.4
|
@@ -91,6 +79,8 @@ executables: []
|
|
91
79
|
extensions: []
|
92
80
|
extra_rdoc_files: []
|
93
81
|
files:
|
82
|
+
- ".github/CODEOWNERS"
|
83
|
+
- ".gitignore"
|
94
84
|
- Gemfile
|
95
85
|
- Gemfile.lock
|
96
86
|
- README.md
|
@@ -98,12 +88,14 @@ files:
|
|
98
88
|
- app/graphql/mutations/authenticated_mutation.rb
|
99
89
|
- app/graphql/mutations/base_mutation.rb
|
100
90
|
- app/graphql/queries/base_query.rb
|
91
|
+
- app/graphql/types/base_connection.rb
|
101
92
|
- app/graphql/types/enums/base/sort_column.rb
|
102
93
|
- app/graphql/types/enums/base/sort_direction.rb
|
103
94
|
- app/graphql/types/inputs/base/attachment.rb
|
104
95
|
- app/graphql/types/inputs/base/filter.rb
|
105
96
|
- app/graphql/types/inputs/base/paging.rb
|
106
97
|
- app/graphql/types/inputs/base/sort.rb
|
98
|
+
- app/graphql/types/inputs/image_resolution.rb
|
107
99
|
- app/graphql/types/objects/base/attachment_type.rb
|
108
100
|
- app/graphql/types/objects/base/paging_type.rb
|
109
101
|
- app/models/concerns/attachable.rb
|
@@ -116,6 +108,7 @@ files:
|
|
116
108
|
- lib/cm-graphql/engine.rb
|
117
109
|
- lib/generators/cm_graphql/add_graphql_generator.rb
|
118
110
|
- lib/generators/cm_graphql/list_api_generator.rb
|
111
|
+
- lib/generators/cm_graphql/templates/base_connection.rb
|
119
112
|
- lib/generators/cm_graphql/templates/graphql_schema.rb
|
120
113
|
- lib/generators/cm_graphql/templates/list_type.rb
|
121
114
|
- lib/generators/cm_graphql/templates/query_type.rb
|
@@ -139,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
139
132
|
- !ruby/object:Gem::Version
|
140
133
|
version: '0'
|
141
134
|
requirements: []
|
142
|
-
rubygems_version: 3.
|
135
|
+
rubygems_version: 3.5.15
|
143
136
|
signing_key:
|
144
137
|
specification_version: 4
|
145
138
|
summary: A gem to setup grapqhl basics like pagination, file upload
|