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 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: