ibrain-core 0.3.6 → 0.3.7

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: 1208ea7c11b96ef277bcd34d9b8a1ff21b78c282c26a4e6c93d6ce3c73d3e303
4
+ data.tar.gz: 3989806e90af2f13d72ff04453dfc48f270e51ccb6d67d5bc9876cb475fab067
5
5
  SHA512:
6
- metadata.gz: 9059a3849ba826fe227d13a6cfb85ee5f6753e49aed78bf1b92a268e7181472293375cfdb134cd1bb2179c0ac8305d6b6a3dd14ddc3003e0be16111f3f248c12
7
- data.tar.gz: 57a41af75b233f6de3376a3918fca42f46e84c7fa50eec9796244e136018e794625bd7243285efb6232c6d6ca3636b5d7563e5df03be7be74f76a50c8311cae6
6
+ metadata.gz: 696a58668b7d169eaa712fcb729aa334b9e333df9849fdd578894f3ec6a451457eab9c5f2066f7e12fa245f6fe67a60af63e07b69649882fbacf81a42a02f5f0
7
+ data.tar.gz: 1aa43fb20f329d2a23e61bbd769f8ccc75b173c88febe9c6e3bdedecb69248926e9dd4c04e4fd3ba88ef8239475ef3c251681c72f6a41d55cb13fbfe6b4c4ccf
@@ -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
@@ -42,20 +43,30 @@ module Ibrain
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
@@ -26,10 +26,9 @@ module Ibrain
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
@@ -43,20 +44,31 @@ module Ibrain
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"
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.6-rc.1'
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
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-27 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