ibrain-core 0.3.5 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 32c2ce34dadd75f8a4f3b9928f6329264ac1b9b2d029bbdc8bd02fc144663cda
4
- data.tar.gz: d3e0ddda503ccdf30e7a6708d2b197b58c3818f1dfa49fc2e8375c19ea5abb86
3
+ metadata.gz: 1208ea7c11b96ef277bcd34d9b8a1ff21b78c282c26a4e6c93d6ce3c73d3e303
4
+ data.tar.gz: 3989806e90af2f13d72ff04453dfc48f270e51ccb6d67d5bc9876cb475fab067
5
5
  SHA512:
6
- metadata.gz: 3174ba2c0cd7bff10ec5ca9bae27be08cfa933c93e34552ec7a7c3f90c657efb974cf9cdcf3df9dbe60f6c15b42057275d1726935ad6b89a1d7153bef629c68e
7
- data.tar.gz: 8710c5d10f36824d66bbf2378de560a63add715ebd75d26d972c15713785c1014712f82dc600f5df7dc8b35c4bca61327594046a2ee140ebd37a9101e09775d7
6
+ metadata.gz: 696a58668b7d169eaa712fcb729aa334b9e333df9849fdd578894f3ec6a451457eab9c5f2066f7e12fa245f6fe67a60af63e07b69649882fbacf81a42a02f5f0
7
+ data.tar.gz: 1aa43fb20f329d2a23e61bbd769f8ccc75b173c88febe9c6e3bdedecb69248926e9dd4c04e4fd3ba88ef8239475ef3c251681c72f6a41d55cb13fbfe6b4c4ccf
@@ -36,9 +36,9 @@ module Ibrain
36
36
  return [params[:query], prepare_variables(params[:variables]), 'IntrospectionQuery'] if params[:query].try(:include?, 'IntrospectionQuery')
37
37
 
38
38
  operations = prepare_variables(params[:operations])
39
- query = operations['query']
40
- variables = operations['variables']
41
- operation_name = operations['operationName']
39
+ query = operations['query'] || params[:query]
40
+ variables = operations['variables'] || params[:variables]
41
+ operation_name = operations['operationName'] || params[:operationName]
42
42
 
43
43
  if params[:map].present?
44
44
  JSON.parse(params[:map]).each do |k, arguments|
@@ -3,7 +3,11 @@
3
3
  module Ibrain
4
4
  module Resolvers
5
5
  class BaseAggregate < BaseResolver
6
- type Ibrain::Types::AggregateType.connection_type, null: false
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
@@ -3,7 +3,9 @@
3
3
  module Ibrain
4
4
  module Types
5
5
  class AggregateType < BaseObject
6
- field :total_count, Int, null: false, default_value: 0
6
+ graphql_name 'aggregate'
7
+
8
+ field :count, Int, null: false
7
9
  end
8
10
  end
9
11
  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 :total_count, Integer, null: false, camelize: false
9
+ field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
10
10
 
11
- def total_count
12
- object.items.size
11
+ def aggregate
12
+ Ibrain::Aggregate.new(object.items.size)
13
13
  end
14
14
  end
15
15
  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 :total_count, Integer, null: false, camelize: false
9
+ field :aggregate, Ibrain::Types::AggregateType, null: false, camelize: false
10
10
 
11
- def total_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,6 +9,8 @@ module Ibrain
9
9
  connection_type_class(Ibrain::Types::BaseConnection)
10
10
 
11
11
  field_class ::Ibrain::Types::BaseField
12
+
13
+ field :name, String, null: true
12
14
  end
13
15
  end
14
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
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Ibrain
4
+ class Aggregate
5
+ def initialize(count)
6
+ @count = count
7
+ end
8
+
9
+ attr_reader :count
10
+ end
11
+ 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.5"
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.4'
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.5
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-25 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
@@ -218,6 +219,7 @@ files:
218
219
  - app/models/concerns/ibrain/user_api_authentication.rb
219
220
  - app/models/concerns/ibrain/user_methods.rb
220
221
  - app/models/ibrain/ability.rb
222
+ - app/models/ibrain/aggregate.rb
221
223
  - app/models/ibrain/application_record.rb
222
224
  - app/models/ibrain/base.rb
223
225
  - app/models/ibrain/legacy_user.rb