ibrain-core 0.3.6 → 0.3.7.rc.pre.1
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/README.md +4 -0
- data/app/graphql/ibrain/resolvers/base_aggregate.rb +4 -0
- data/app/graphql/ibrain/resolvers/base_resolver.rb +0 -4
- data/app/graphql/ibrain/types/base_api_connection.rb +3 -3
- data/app/graphql/ibrain/types/base_connection.rb +1 -1
- data/app/graphql/ibrain/types/base_object.rb +1 -7
- data/app/graphql/ibrain/types/base_type.rb +13 -0
- data/lib/generators/ibrain/graphql/mutation_generator.rb +18 -7
- data/lib/generators/ibrain/graphql/resolver_generator.rb +2 -3
- data/lib/generators/ibrain/graphql/resolvers_generator.rb +19 -7
- data/lib/generators/ibrain/graphql/templates/mutation.erb +1 -1
- data/lib/generators/ibrain/graphql/templates/resolver.erb +2 -2
- data/lib/ibrain/core/version.rb +2 -2
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fe5070f8da1e4634698ccbb40dd5aa90636760112d8870e34b01a429033f5f9
|
4
|
+
data.tar.gz: d842b7b88e84bbcaece19285908ed9976f89111d81bd1658f0aa0cb8fa4df7b4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7939a8bb9bacd0a55d65a9d1f2642dde013068d7f4d44b5584a2286d6c53b7ab513aa9eaa1ca9059bf3b5b6046e014e09e94fbeed917ca0032574db4a9121754
|
7
|
+
data.tar.gz: 938b219b31b4d65f44e6ef390264dda29b62a92cf27ee2aa6b907dd8a6bab05d1eb1eb10d33f205cbf50f1620ab6208e22d51549d3798a5006cd409344dbaa94
|
data/README.md
CHANGED
@@ -51,6 +51,10 @@ To generate graphql resolvers query to get users list
|
|
51
51
|
```bash
|
52
52
|
bundle exec rails generate ibrain:graphql:resolvers users --model=User
|
53
53
|
```
|
54
|
+
To generate graphql resolver, mutation with prefix folder
|
55
|
+
```bash
|
56
|
+
bundle exec rails generate ibrain:graphql:resolvers users --model=User --prefix=admin
|
57
|
+
```
|
54
58
|
For pagination please using aggregate body query, something like
|
55
59
|
```
|
56
60
|
query users($offset: Int, $limit: Int, $filter: Filter) {
|
@@ -4,6 +4,10 @@ module Ibrain
|
|
4
4
|
module Resolvers
|
5
5
|
class BaseAggregate < BaseResolver
|
6
6
|
type Ibrain::Types::BaseObject.connection_type, null: false
|
7
|
+
|
8
|
+
argument :where, Ibrain::Types::FilterType, required: false, default_value: nil
|
9
|
+
argument :limit, Int, required: false, default_value: 10
|
10
|
+
argument :offset, Int, required: false, default_value: 0
|
7
11
|
end
|
8
12
|
end
|
9
13
|
end
|
@@ -5,10 +5,6 @@ module Ibrain
|
|
5
5
|
class BaseResolver < GraphQL::Schema::Resolver
|
6
6
|
argument_class ::Ibrain::Types::BaseArgument
|
7
7
|
|
8
|
-
argument :filter, Ibrain::Types::FilterType, required: false, default_value: nil
|
9
|
-
argument :limit, Int, required: false, default_value: 10
|
10
|
-
argument :offset, Int, required: false, default_value: 0
|
11
|
-
|
12
8
|
def current_user
|
13
9
|
context.fetch(:current_user)
|
14
10
|
end
|
@@ -6,10 +6,10 @@ module Ibrain
|
|
6
6
|
# add `nodes` and `pageInfo` fields, as well as `edge_type(...)` and `node_nullable(...)` overrides
|
7
7
|
include GraphQL::Types::Relay::ConnectionBehaviors
|
8
8
|
|
9
|
-
field :
|
9
|
+
field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
|
10
10
|
|
11
|
-
def
|
12
|
-
object.items.size
|
11
|
+
def aggregate
|
12
|
+
Ibrain::Aggregate.new(object.items.size)
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
@@ -10,13 +10,7 @@ module Ibrain
|
|
10
10
|
|
11
11
|
field_class ::Ibrain::Types::BaseField
|
12
12
|
|
13
|
-
|
14
|
-
to_s.demodulize.gsub('Type', '').singularize.classify.constantize.table_name
|
15
|
-
rescue StandardError
|
16
|
-
return to_s.demodulize if name.blank?
|
17
|
-
|
18
|
-
name
|
19
|
-
end
|
13
|
+
field :name, String, null: true
|
20
14
|
end
|
21
15
|
end
|
22
16
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ibrain
|
4
|
+
module Types
|
5
|
+
class BaseType < BaseObject
|
6
|
+
def self.graphql_name(name = "")
|
7
|
+
return name if name.present?
|
8
|
+
|
9
|
+
self.name.demodulize.gsub('Type', '').classify.constantize.table_name
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -18,6 +18,7 @@ module Ibrain
|
|
18
18
|
|
19
19
|
argument :name, type: :string
|
20
20
|
class_option :model, type: :string, default: nil
|
21
|
+
class_option :prefix, type: :string, default: nil
|
21
22
|
|
22
23
|
def initialize(args, *options) # :nodoc:
|
23
24
|
# Unfreeze name in case it's given as a frozen string
|
@@ -37,25 +38,35 @@ module Ibrain
|
|
37
38
|
end
|
38
39
|
|
39
40
|
if options[:model].present?
|
40
|
-
system("bundle exec rails generate ibrain:graphql:object #{options[:model].
|
41
|
+
system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
|
41
42
|
end
|
42
43
|
|
43
44
|
template "mutation.erb", "#{options[:directory]}/mutations/#{file_name}.rb"
|
44
45
|
|
45
|
-
sentinel = /class .*MutationType\s*<\s*[^\s]+?\n/m
|
46
46
|
in_root do
|
47
47
|
gsub_file "#{options[:directory]}/types/mutation_type.rb", / \# TODO: Add Mutations as fields\s*\n/m, ""
|
48
|
-
inject_into_file "#{options[:directory]}/types/mutation_type.rb", " field :#{field_name}, mutation: Mutations::#{mutation_name}\n",
|
48
|
+
inject_into_file "#{options[:directory]}/types/mutation_type.rb", "\n field :#{field_name}, mutation: Mutations::#{mutation_name} \n ", before: "end\nend", verbose: true, force: true
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def assign_names!(name)
|
55
|
-
|
56
|
-
|
57
|
-
@
|
58
|
-
|
55
|
+
underscore_name = name&.camelize&.underscore
|
56
|
+
prefix = options[:prefix].try(:underscore)
|
57
|
+
@model_name = options[:model].blank? ? 'Post' : options[:model].try(:capitalize)
|
58
|
+
|
59
|
+
if prefix.blank?
|
60
|
+
@mutation_name = name.camelize(:upper)
|
61
|
+
@file_name = underscore_name
|
62
|
+
@field_name = underscore_name
|
63
|
+
|
64
|
+
return
|
65
|
+
end
|
66
|
+
|
67
|
+
@mutation_name = "#{prefix.try(:capitalize)}::#{name.camelize(:upper)}"
|
68
|
+
@file_name = "#{prefix}/#{underscore_name}"
|
69
|
+
@field_name = "#{prefix}_#{underscore_name}"
|
59
70
|
end
|
60
71
|
end
|
61
72
|
end
|
@@ -21,15 +21,14 @@ module Ibrain
|
|
21
21
|
end
|
22
22
|
|
23
23
|
if options[:model].present?
|
24
|
-
system("bundle exec rails generate ibrain:graphql:object #{options[:model].
|
24
|
+
system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
|
25
25
|
end
|
26
26
|
|
27
27
|
template "resolver.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
|
28
28
|
|
29
|
-
sentinel = /class .*QueryType\s*<\s*[^\s]+?\n/m
|
30
29
|
in_root do
|
31
30
|
gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
|
32
|
-
inject_into_file "#{options[:directory]}/types/query_type.rb", " field :#{field_name}, resolver: Resolvers::#{resolver_name}\n
|
31
|
+
inject_into_file "#{options[:directory]}/types/query_type.rb", "\n field :#{field_name}, resolver: Resolvers::#{resolver_name} \n ", before: "end\nend", verbose: true, force: true
|
33
32
|
end
|
34
33
|
end
|
35
34
|
end
|
@@ -18,6 +18,7 @@ module Ibrain
|
|
18
18
|
|
19
19
|
argument :name, type: :string
|
20
20
|
class_option :model, type: :string, default: nil
|
21
|
+
class_option :prefix, type: :string, default: nil
|
21
22
|
|
22
23
|
def initialize(args, *options) # :nodoc:
|
23
24
|
# Unfreeze name in case it's given as a frozen string
|
@@ -37,26 +38,37 @@ module Ibrain
|
|
37
38
|
end
|
38
39
|
|
39
40
|
if options[:model].present?
|
40
|
-
system("bundle exec rails generate ibrain:graphql:object #{options[:model].
|
41
|
+
system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
|
41
42
|
end
|
42
43
|
|
43
44
|
template "resolvers.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
|
44
45
|
template "aggregate.erb", "#{options[:directory]}/resolvers/#{file_name}_aggregate.rb"
|
45
46
|
|
46
|
-
sentinel = /class .*QueryType\s*<\s*[^\s]+?\n/m
|
47
47
|
in_root do
|
48
48
|
gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
|
49
|
-
inject_into_file "#{options[:directory]}/types/query_type.rb", " field :#{field_name}, resolver: Resolvers::#{resolver_name}\n field :#{field_name}_aggregate, resolver: Resolvers::#{resolver_name}Aggregate\n
|
49
|
+
inject_into_file "#{options[:directory]}/types/query_type.rb", "\n field :#{field_name}, resolver: Resolvers::#{resolver_name}\n field :#{field_name}_aggregate, resolver: Resolvers::#{resolver_name}Aggregate \n ", before: "end\nend", verbose: true, force: true
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
private
|
54
54
|
|
55
55
|
def assign_names!(name)
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
@model_name = options[:model].blank? ? 'Post' : options[:model].capitalize
|
56
|
+
underscore_name = name&.camelize&.underscore
|
57
|
+
prefix = options[:prefix].try(:underscore)
|
58
|
+
|
59
|
+
@model_name = options[:model].blank? ? 'Post' : options[:model].try(:capitalize)
|
60
|
+
|
61
|
+
if prefix.blank?
|
62
|
+
@resolver_name = name.camelize(:upper)
|
63
|
+
@file_name = underscore_name
|
64
|
+
@field_name = underscore_name
|
65
|
+
|
66
|
+
return
|
67
|
+
end
|
68
|
+
|
69
|
+
@resolver_name = "#{prefix.try(:capitalize)}::#{name.camelize(:upper)}"
|
70
|
+
@file_name = "#{prefix}/#{underscore_name}"
|
71
|
+
@field_name = "#{prefix}_#{underscore_name}"
|
60
72
|
end
|
61
73
|
end
|
62
74
|
end
|
@@ -7,7 +7,7 @@ module Mutations
|
|
7
7
|
# description
|
8
8
|
|
9
9
|
# TODO: define return fields
|
10
|
-
field :<%= model_name.underscore %>, Types::<%= model_name %>Type, null: false, description: 'Record Type for mutation response'
|
10
|
+
field :<%= model_name.underscore %>, Types::Objects::<%= model_name %>Type, null: false, description: 'Record Type for mutation response'
|
11
11
|
|
12
12
|
# TODO: define arguments
|
13
13
|
# argument :name, String, required: true
|
@@ -9,11 +9,11 @@ module Resolvers
|
|
9
9
|
# TODO: define return fields
|
10
10
|
type Types::Objects::<%= model_name.capitalize %>Type, null: false
|
11
11
|
|
12
|
-
argument :id, ID, required:
|
12
|
+
argument :id, ID, required: true, description: 'TODO: describe about this argument'
|
13
13
|
|
14
14
|
# TODO: define resolve method
|
15
15
|
def resolve(args)
|
16
|
-
<%= model_name.capitalize %>Repository.find
|
16
|
+
<%= model_name.capitalize %>Repository.find(args)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
data/lib/ibrain/core/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ibrain-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.7.rc.pre.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tai Nguyen Van
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-07-
|
11
|
+
date: 2022-07-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord-session_store
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- app/graphql/ibrain/types/base_node.rb
|
209
209
|
- app/graphql/ibrain/types/base_object.rb
|
210
210
|
- app/graphql/ibrain/types/base_scalar.rb
|
211
|
+
- app/graphql/ibrain/types/base_type.rb
|
211
212
|
- app/graphql/ibrain/types/base_union.rb
|
212
213
|
- app/graphql/ibrain/types/filter_type.rb
|
213
214
|
- app/graphql/ibrain/types/node_type.rb
|
@@ -302,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
302
303
|
version: '0'
|
303
304
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
304
305
|
requirements:
|
305
|
-
- - "
|
306
|
+
- - ">"
|
306
307
|
- !ruby/object:Gem::Version
|
307
|
-
version:
|
308
|
+
version: 1.3.1
|
308
309
|
requirements: []
|
309
310
|
rubygems_version: 3.3.7
|
310
311
|
signing_key:
|