ibrain-core 0.3.6 → 0.3.7.rc.pre.1

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: ce7566a45bf8104c5716af6292a1c42310a04b6816b39344f150af14f1dd021b
4
- data.tar.gz: b0dad36cd1f5d34c7e3ba1de7eed8a75be9c6eae6fc2338942010da8212f1724
3
+ metadata.gz: 1fe5070f8da1e4634698ccbb40dd5aa90636760112d8870e34b01a429033f5f9
4
+ data.tar.gz: d842b7b88e84bbcaece19285908ed9976f89111d81bd1658f0aa0cb8fa4df7b4
5
5
  SHA512:
6
- metadata.gz: 9059a3849ba826fe227d13a6cfb85ee5f6753e49aed78bf1b92a268e7181472293375cfdb134cd1bb2179c0ac8305d6b6a3dd14ddc3003e0be16111f3f248c12
7
- data.tar.gz: 57a41af75b233f6de3376a3918fca42f46e84c7fa50eec9796244e136018e794625bd7243285efb6232c6d6ca3636b5d7563e5df03be7be74f76a50c8311cae6
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 :count, Integer, null: false, camelize: false
9
+ field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
10
10
 
11
- def count
12
- object.items.size
11
+ def aggregate
12
+ Ibrain::Aggregate.new(object.items.size)
13
13
  end
14
14
  end
15
15
  end
@@ -9,7 +9,7 @@ module Ibrain
9
9
  field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
10
10
 
11
11
  def aggregate
12
- Ibrain::Aggregate.new(object.uniq.size)
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
- def self.overridden_graphql_name(name = '')
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].downcase}")
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", after: sentinel, verbose: false, force: false
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
- @field_name = name.camelize.underscore
56
- @mutation_name = name.camelize(:upper)
57
- @file_name = name.camelize.underscore
58
- @model_name = options[:model].blank? ? 'Post' : options[:model].capitalize
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].downcase}")
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\n", after: sentinel, verbose: false, force: false
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].downcase}")
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\n", after: sentinel, verbose: false, force: false
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
- @field_name = name.camelize.underscore
57
- @resolver_name = name.camelize(:upper)
58
- @file_name = name.camelize.underscore
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: false, description: 'TODO: describe about this argument'
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 args[:id]
16
+ <%= model_name.capitalize %>Repository.find(args)
17
17
  end
18
18
  end
19
19
  end
@@ -1,14 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Ibrain
4
- VERSION = "0.3.6"
4
+ VERSION = "0.3.7.rc-1"
5
5
 
6
6
  def self.ibrain_version
7
7
  VERSION
8
8
  end
9
9
 
10
10
  def self.previous_ibrain_minor_version
11
- '0.3.5'
11
+ '0.3.7'
12
12
  end
13
13
 
14
14
  def self.ibrain_gem_version
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.6
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-26 00:00:00.000000000 Z
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: '0'
308
+ version: 1.3.1
308
309
  requirements: []
309
310
  rubygems_version: 3.3.7
310
311
  signing_key: