ibrain-core 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (85) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/ibrain/base_controller.rb +12 -14
  3. data/app/controllers/ibrain/core/graphql_controller.rb +79 -83
  4. data/app/graphql/ibrain/base_schema.rb +50 -52
  5. data/app/graphql/ibrain/extentions/default_value.rb +7 -11
  6. data/app/graphql/ibrain/extentions/roles.rb +15 -20
  7. data/app/graphql/ibrain/extentions/session_required.rb +10 -14
  8. data/app/graphql/ibrain/lazy/base.rb +2 -6
  9. data/app/graphql/ibrain/loaders/association_loader.rb +51 -55
  10. data/app/graphql/ibrain/mutations/base_mutation.rb +52 -56
  11. data/app/graphql/ibrain/policies/base_policy.rb +43 -47
  12. data/app/graphql/ibrain/policies/graphql_policy.rb +2 -6
  13. data/app/graphql/ibrain/resolvers/base_aggregate.rb +6 -10
  14. data/app/graphql/ibrain/resolvers/base_resolver.rb +8 -12
  15. data/app/graphql/ibrain/types/aggregate_type.rb +4 -8
  16. data/app/graphql/ibrain/types/attribute_type.rb +2 -5
  17. data/app/graphql/ibrain/types/base_api_connection.rb +6 -10
  18. data/app/graphql/ibrain/types/base_api_edge.rb +4 -8
  19. data/app/graphql/ibrain/types/base_api_field.rb +7 -11
  20. data/app/graphql/ibrain/types/base_api_object.rb +6 -10
  21. data/app/graphql/ibrain/types/base_argument.rb +3 -7
  22. data/app/graphql/ibrain/types/base_connection.rb +7 -11
  23. data/app/graphql/ibrain/types/base_edge.rb +3 -7
  24. data/app/graphql/ibrain/types/base_enum.rb +1 -5
  25. data/app/graphql/ibrain/types/base_field.rb +6 -10
  26. data/app/graphql/ibrain/types/base_input_object.rb +6 -10
  27. data/app/graphql/ibrain/types/base_interface.rb +5 -9
  28. data/app/graphql/ibrain/types/base_object.rb +12 -16
  29. data/app/graphql/ibrain/types/base_scalar.rb +1 -5
  30. data/app/graphql/ibrain/types/base_type.rb +4 -10
  31. data/app/graphql/ibrain/types/base_union.rb +3 -7
  32. data/app/graphql/ibrain/types/filter_type.rb +1 -5
  33. data/app/graphql/ibrain/types/node_type.rb +4 -8
  34. data/app/graphql/ibrain/util/field_combiner.rb +5 -9
  35. data/app/graphql/ibrain/util/query_combiner.rb +4 -8
  36. data/app/models/concerns/ibrain/soft_deletable.rb +6 -8
  37. data/app/models/concerns/ibrain/user_api_authentication.rb +14 -16
  38. data/app/models/concerns/ibrain/user_methods.rb +11 -13
  39. data/app/models/ibrain/ability.rb +31 -32
  40. data/app/models/ibrain/aggregate.rb +5 -7
  41. data/app/models/ibrain/application_record.rb +2 -4
  42. data/app/models/ibrain/legacy_user.rb +7 -13
  43. data/app/models/ibrain/role.rb +6 -8
  44. data/app/models/ibrain/role_user.rb +8 -10
  45. data/app/repositories/ibrain/base_repository.rb +9 -11
  46. data/lib/generators/ibrain/core/model_generator.rb +17 -21
  47. data/lib/generators/ibrain/graphql/core.rb +55 -59
  48. data/lib/generators/ibrain/graphql/mutation_generator.rb +58 -66
  49. data/lib/generators/ibrain/graphql/object_generator.rb +58 -70
  50. data/lib/generators/ibrain/graphql/resolver_generator.rb +17 -25
  51. data/lib/generators/ibrain/graphql/resolvers_generator.rb +59 -67
  52. data/lib/generators/ibrain/graphql/templates/aggregate.erb +5 -7
  53. data/lib/generators/ibrain/graphql/templates/input.erb +5 -9
  54. data/lib/generators/ibrain/graphql/templates/mutation.erb +24 -26
  55. data/lib/generators/ibrain/graphql/templates/object.erb +6 -10
  56. data/lib/generators/ibrain/graphql/templates/resolver.erb +9 -11
  57. data/lib/generators/ibrain/graphql/templates/resolvers.erb +8 -10
  58. data/lib/generators/ibrain/graphql/type_generator.rb +84 -88
  59. data/lib/generators/ibrain/install/install_generator.rb +137 -140
  60. data/lib/generators/ibrain/install/templates/graphql/types/mutation_type.rb.tt +13 -15
  61. data/lib/generators/ibrain/install/templates/graphql/types/query_type.rb.tt +11 -13
  62. data/lib/generators/ibrain/install/templates/rubocop.yml.tt +83 -30
  63. data/lib/ibrain/app_configuration.rb +34 -36
  64. data/lib/ibrain/core/class_constantizer.rb +30 -33
  65. data/lib/ibrain/core/controller_helpers/auth.rb +53 -59
  66. data/lib/ibrain/core/controller_helpers/current_host.rb +5 -11
  67. data/lib/ibrain/core/controller_helpers/response.rb +43 -49
  68. data/lib/ibrain/core/controller_helpers/strong_parameters.rb +9 -15
  69. data/lib/ibrain/core/engine.rb +5 -9
  70. data/lib/ibrain/core/environment.rb +5 -9
  71. data/lib/ibrain/core/environment_extension.rb +13 -17
  72. data/lib/ibrain/core/role_configuration.rb +52 -54
  73. data/lib/ibrain/core/validators/email.rb +15 -17
  74. data/lib/ibrain/core/version.rb +2 -2
  75. data/lib/ibrain/core/versioned_value.rb +61 -65
  76. data/lib/ibrain/encryptor.rb +18 -20
  77. data/lib/ibrain/logger.rb +13 -15
  78. data/lib/ibrain/permission_sets/base.rb +22 -26
  79. data/lib/ibrain/permission_sets/super_user.rb +3 -7
  80. data/lib/ibrain/permitted_attributes.rb +18 -20
  81. data/lib/ibrain/preferences/configuration.rb +135 -137
  82. data/lib/ibrain/preferences/preferable.rb +158 -162
  83. data/lib/ibrain/preferences/preferable_class_methods.rb +112 -114
  84. data/lib/ibrain/user_class_handle.rb +22 -24
  85. metadata +2 -2
@@ -2,87 +2,75 @@
2
2
 
3
3
  require_relative 'type_generator'
4
4
 
5
- module Ibrain
6
- module Graphql
7
- # Generate an object type by name,
8
- # with the specified fields.
9
- #
10
- # ```
11
- # rails g graphql:object PostType name:String!
12
- # ```
13
- #
14
- # Add the Node interface with `--node`.
15
- class ObjectGenerator < TypeGeneratorBase
16
- desc "Create a GraphQL::ObjectType with the given name and fields." \
17
- "If the given type name matches an existing ActiveRecord model, the generated type will automatically include fields for the models database columns."
18
- source_root File.expand_path('templates', __dir__)
5
+ class Ibrain::Graphql::ObjectGenerator < Ibrain::Graphql::TypeGeneratorBase
6
+ desc "Create a GraphQL::ObjectType with the given name and fields." \
7
+ "If the given type name matches an existing ActiveRecord model, the generated type will automatically include fields for the models database columns."
8
+ source_root File.expand_path('templates', __dir__)
19
9
 
20
- argument :custom_fields,
21
- type: :array,
22
- default: [],
23
- banner: "name:type name:type ...",
24
- desc: "Fields for this object (type may be expressed as Ruby or GraphQL)"
10
+ argument :custom_fields,
11
+ type: :array,
12
+ default: [],
13
+ banner: "name:type name:type ...",
14
+ desc: "Fields for this object (type may be expressed as Ruby or GraphQL)"
25
15
 
26
- class_option :node,
27
- type: :boolean,
28
- default: false,
29
- desc: "Include the Relay Node interface"
16
+ class_option :node,
17
+ type: :boolean,
18
+ default: false,
19
+ desc: "Include the Relay Node interface"
30
20
 
31
- def create_type_file
32
- create_dir('app/repositories') unless Dir.exist?('app/repositories')
21
+ def create_type_file
22
+ create_dir('app/repositories') unless Dir.exist?('app/repositories')
33
23
 
34
- template "object.erb", "#{options[:directory]}/types/objects/#{type_file_name}.rb"
35
- template "input.erb", "#{options[:directory]}/types/attributes/#{input_file_name}.rb"
36
- template "repository.erb", "app/repositories/#{type_name}_repository.rb"
37
- end
24
+ template "object.erb", "#{options[:directory]}/types/objects/#{type_file_name}.rb"
25
+ template "input.erb", "#{options[:directory]}/types/attributes/#{input_file_name}.rb"
26
+ template "repository.erb", "app/repositories/#{type_name}_repository.rb"
27
+ end
38
28
 
39
- def fields
40
- columns = []
41
- columns += klass.columns.map { |c| generate_column_string(c) } if class_exists?
42
- columns + custom_fields
43
- end
29
+ def fields
30
+ columns = []
31
+ columns += klass.columns.map { |c| generate_column_string(c) } if class_exists?
32
+ columns + custom_fields
33
+ end
44
34
 
45
- def self.normalize_type_expression(type_expression, mode:, null: true)
46
- case type_expression
47
- when "Text", "Json", "json"
48
- ["String", null]
49
- when "Decimal"
50
- ["Float", null]
51
- when "DateTime", "Datetime"
52
- ["GraphQL::Types::ISO8601DateTime", null]
53
- when "Date"
54
- ["GraphQL::Types::ISO8601Date", null]
55
- else
56
- super
57
- end
58
- end
35
+ def self.normalize_type_expression(type_expression, mode:, null: true)
36
+ case type_expression
37
+ when "Text", "Json", "json"
38
+ ["String", null]
39
+ when "Decimal"
40
+ ["Float", null]
41
+ when "DateTime", "Datetime"
42
+ ["GraphQL::Types::ISO8601DateTime", null]
43
+ when "Date"
44
+ ["GraphQL::Types::ISO8601Date", null]
45
+ else
46
+ super
47
+ end
48
+ end
59
49
 
60
- private
50
+ private
61
51
 
62
- def generate_column_string(column)
63
- name = column.name
64
- required = column.null ? "" : "!"
65
- type = column_type_string(column)
66
- "#{name}:#{required}#{type}"
67
- end
52
+ def generate_column_string(column)
53
+ name = column.name
54
+ required = column.null ? "" : "!"
55
+ type = column_type_string(column)
56
+ "#{name}:#{required}#{type}"
57
+ end
68
58
 
69
- def column_type_string(column)
70
- column.name == "id" ? "ID" : column.type.to_s.camelize
71
- end
59
+ def column_type_string(column)
60
+ column.name == "id" ? "ID" : column.type.to_s.camelize
61
+ end
72
62
 
73
- def class_exists?
74
- klass.is_a?(Class) && klass.ancestors.include?(ActiveRecord::Base)
75
- rescue NameError
76
- false
77
- end
63
+ def class_exists?
64
+ klass.is_a?(Class) && klass.ancestors.include?(ActiveRecord::Base)
65
+ rescue NameError
66
+ false
67
+ end
78
68
 
79
- def model_name
80
- type_name.try(:camelize, :upper)
81
- end
69
+ def model_name
70
+ type_name.try(:camelize, :upper)
71
+ end
82
72
 
83
- def klass
84
- @klass ||= Module.const_get(type_name.camelize)
85
- end
86
- end
73
+ def klass
74
+ @klass ||= Module.const_get(type_name.camelize)
87
75
  end
88
76
  end
@@ -4,34 +4,26 @@
4
4
 
5
5
  require_relative 'resolvers_generator'
6
6
 
7
- module Ibrain
8
- module Graphql
9
- # TODO: What other options should be supported?
10
- #
11
- # @example Generate a `GraphQL::Schema::Resolver` by name
12
- # rails g graphql:resolver PostsResolver
13
- class ResolverGenerator < ResolversGenerator
14
- source_root File.expand_path('templates', __dir__)
7
+ class Ibrain::Graphql::ResolverGenerator < Ibrain::Graphql::ResolversGenerator
8
+ source_root File.expand_path('templates', __dir__)
15
9
 
16
- def create_resolver_file
17
- if @behavior == :revoke
18
- log :gsub, "#{options[:directory]}/types/query_type.rb"
19
- else
20
- create_resolver_root_type
21
- end
10
+ def create_resolver_file
11
+ if @behavior == :revoke
12
+ log :gsub, "#{options[:directory]}/types/query_type.rb"
13
+ else
14
+ create_resolver_root_type
15
+ end
22
16
 
23
- if options[:model].present?
24
- system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
25
- end
17
+ if options[:model].present?
18
+ system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
19
+ end
26
20
 
27
- template "resolver.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
28
- return unless ::Ibrain::Config.is_auto_append_mutation
21
+ template "resolver.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
22
+ return unless ::Ibrain::Config.is_auto_append_mutation
29
23
 
30
- in_root do
31
- 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", "\n field :#{field_name}, resolver: Resolvers::#{resolver_name} \n ", before: "end\nend", verbose: true, force: true
33
- end
34
- end
24
+ in_root do
25
+ gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
26
+ 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
35
27
  end
36
28
  end
37
- end
29
+ end
@@ -4,73 +4,65 @@ require 'rails/generators'
4
4
  require 'rails/generators/named_base'
5
5
  require_relative 'core'
6
6
 
7
- module Ibrain
8
- module Graphql
9
- # TODO: What other options should be supported?
10
- #
11
- # @example Generate a `GraphQL::Schema::Resolver` by name
12
- # rails g graphql:resolver PostsResolver
13
- class ResolversGenerator < Rails::Generators::Base
14
- include Core
15
-
16
- desc "Create a resolver by name"
17
- source_root File.expand_path('templates', __dir__)
18
-
19
- argument :name, type: :string
20
- class_option :model, type: :string, default: nil
21
- class_option :prefix, type: :string, default: nil
22
-
23
- def initialize(args, *options) # :nodoc:
24
- # Unfreeze name in case it's given as a frozen string
25
- args[0] = args[0].dup if args[0].is_a?(String) && args[0].frozen?
26
- super
27
-
28
- assign_names!(name)
29
- end
30
-
31
- attr_reader :file_name, :resolver_name, :field_name, :model_name
32
-
33
- def create_resolver_file
34
- if @behavior == :revoke
35
- log :gsub, "#{options[:directory]}/types/query_type.rb"
36
- else
37
- create_resolver_root_type
38
- end
39
-
40
- if options[:model].present?
41
- system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
42
- end
43
-
44
- template "resolvers.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
45
- template "aggregate.erb", "#{options[:directory]}/resolvers/#{file_name}_aggregate.rb"
46
- return unless ::Ibrain::Config.is_auto_append_mutation
47
-
48
- in_root do
49
- gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
50
- 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
51
- end
52
- end
53
-
54
- private
55
-
56
- def assign_names!(name)
57
- underscore_name = name&.camelize&.underscore
58
- prefix = options[:prefix].try(:underscore)
59
-
60
- @model_name = options[:model].blank? ? 'Post' : options[:model].try(:camelize, :upper)
61
-
62
- if prefix.blank?
63
- @resolver_name = name.camelize(:upper)
64
- @file_name = underscore_name
65
- @field_name = underscore_name
66
-
67
- return
68
- end
69
-
70
- @resolver_name = "#{prefix.try(:camelize, :upper)}::#{name.camelize(:upper)}"
71
- @file_name = "#{prefix}/#{underscore_name}"
72
- @field_name = "#{prefix}_#{underscore_name}"
73
- end
7
+ class Ibrain::Graphql::ResolversGenerator < Rails::Generators::Base
8
+ include Core
9
+
10
+ desc "Create a resolver by name"
11
+ source_root File.expand_path('templates', __dir__)
12
+
13
+ argument :name, type: :string
14
+ class_option :model, type: :string, default: nil
15
+ class_option :prefix, type: :string, default: nil
16
+
17
+ def initialize(args, *options) # :nodoc:
18
+ # Unfreeze name in case it's given as a frozen string
19
+ args[0] = args[0].dup if args[0].is_a?(String) && args[0].frozen?
20
+ super
21
+
22
+ assign_names!(name)
23
+ end
24
+
25
+ attr_reader :file_name, :resolver_name, :field_name, :model_name
26
+
27
+ def create_resolver_file
28
+ if @behavior == :revoke
29
+ log :gsub, "#{options[:directory]}/types/query_type.rb"
30
+ else
31
+ create_resolver_root_type
32
+ end
33
+
34
+ if options[:model].present?
35
+ system("bundle exec rails generate ibrain:graphql:object #{options[:model].underscore}")
36
+ end
37
+
38
+ template "resolvers.erb", "#{options[:directory]}/resolvers/#{file_name}.rb"
39
+ template "aggregate.erb", "#{options[:directory]}/resolvers/#{file_name}_aggregate.rb"
40
+ return unless ::Ibrain::Config.is_auto_append_mutation
41
+
42
+ in_root do
43
+ gsub_file "#{options[:directory]}/types/query_type.rb", / \# TODO: Add Resolvers as fields\s*\n/m, ""
44
+ 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
45
+ end
46
+ end
47
+
48
+ private
49
+
50
+ def assign_names!(name)
51
+ underscore_name = name&.camelize&.underscore
52
+ prefix = options[:prefix].try(:underscore)
53
+
54
+ @model_name = options[:model].blank? ? 'Post' : options[:model].try(:camelize, :upper)
55
+
56
+ if prefix.blank?
57
+ @resolver_name = name.camelize(:upper)
58
+ @file_name = underscore_name
59
+ @field_name = underscore_name
60
+
61
+ return
74
62
  end
63
+
64
+ @resolver_name = "#{prefix.try(:camelize, :upper)}::#{name.camelize(:upper)}"
65
+ @file_name = "#{prefix}/#{underscore_name}"
66
+ @field_name = "#{prefix}_#{underscore_name}"
75
67
  end
76
68
  end
@@ -1,13 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  <% module_namespacing_when_supported do -%>
4
- module Resolvers
5
- class <%= resolver_name %>Aggregate < Ibrain::Resolvers::BaseAggregate
6
- description 'Define aggregate to count total records for <%= resolver_name %>'
7
- # define resolve method
8
- def resolve(args)
9
- <%= model_name.try(:camelize, :upper) %>Repository.aggregate(args)
10
- end
4
+ class Resolvers::<%= resolver_name %>Aggregate < Ibrain::Resolvers::BaseAggregate
5
+ description 'Define aggregate to count total records for <%= resolver_name %>'
6
+ # define resolve method
7
+ def resolve(args)
8
+ <%= model_name.try(:camelize, :upper) %>Repository.aggregate(args)
11
9
  end
12
10
  end
13
11
  <% end -%>
@@ -1,13 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  <% module_namespacing_when_supported do -%>
4
- module Types
5
- module Attributes
6
- class <%= input_ruby_name.split('::')[-1] %> < Ibrain::Types::BaseInputObject
7
- description '<%= input_ruby_name.split('::')[-1] %>'
8
-
9
- <% normalized_fields.each do |f| %> <%= f.to_argument %>
10
- <% end %>end
11
- end
12
- end
4
+ class Types::Attributes::<%= input_ruby_name.split('::')[-1] %> < Ibrain::Types::BaseInputObject
5
+ description '<%= input_ruby_name.split('::')[-1] %>'
6
+
7
+ <% normalized_fields.each do |f| %> <%= f.to_argument %>
8
+ <% end %>end
13
9
  <% end -%>
@@ -1,32 +1,31 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  <% module_namespacing_when_supported do -%>
4
- module Mutations
5
- class <%= mutation_name %> < Ibrain::Mutations::BaseMutation
6
- # TODO: define description describe about this mutation
7
- # description
8
-
9
- # TODO: define return fields
10
- field :returning, Types::Objects::<%= model_name %>Type, null: true, description: 'Record Type for mutation response'
11
-
12
- # TODO: define arguments
13
- # argument :name, String, required: true
14
- argument :attributes, Types::Attributes::<%= model_name %>Input, required: true
15
- # argument :id, ID, required: true
16
-
17
- # TODO: define resolve method
18
- def resolve(args)
19
- # TODO: define logic inside repository
20
- # Something like
21
- # if resource.blank?
22
- # raise GraphQL::ExecutionError, I18n.t("activerecord.errors.models.job.attributes.id.could_not_find")
23
- # end
24
-
25
- # repo.update(normalize_parameters)
26
- graphql_return
27
- end
4
+ class Mutations::<%= mutation_name %> < Ibrain::Mutations::BaseMutation
5
+ # TODO: define description describe about this mutation
6
+ # description
7
+
8
+ # TODO: define return fields
9
+ field :returning, Types::Objects::<%= model_name %>Type, null: true, description: 'Record Type for mutation response'
10
+
11
+ # TODO: define arguments
12
+ # argument :name, String, required: true
13
+ argument :attributes, Types::Attributes::<%= model_name %>Input, required: true
14
+ # argument :id, ID, required: true
15
+
16
+ # TODO: define resolve method
17
+ def resolve(args)
18
+ # TODO: define logic inside repository
19
+ # Something like
20
+ # if resource.blank?
21
+ # raise GraphQL::ExecutionError, I18n.t("activerecord.errors.models.job.attributes.id.could_not_find")
22
+ # end
23
+
24
+ # repo.update(normalize_parameters)
25
+ graphql_return
26
+ end
28
27
 
29
- private
28
+ private
30
29
 
31
30
  def normalize_parameters
32
31
  # attribute_params.permit(:name, :status)
@@ -39,6 +38,5 @@ module Mutations
39
38
  def repo
40
39
  # <%= model_name %>Repository.new(current_user, resource)
41
40
  end
42
- end
43
41
  end
44
42
  <% end -%>
@@ -1,15 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  <% module_namespacing_when_supported do -%>
4
- module Types
5
- module Objects
6
- class <%= type_ruby_name.split('::')[-1] %> < Ibrain::Types::BaseType
7
- implements Ibrain::Interfaces::RecordInterface
4
+ class Types::Objects::<%= type_ruby_name.split('::')[-1] %> < Ibrain::Types::BaseType
5
+ implements Ibrain::Interfaces::RecordInterface
8
6
 
9
- description '<%= type_ruby_name.split('::')[-1] %>'
10
-
11
- <% normalized_fields.each do |f| %> <%= f.to_ruby %>
12
- <% end %>end
13
- end
14
- end
7
+ description '<%= type_ruby_name.split('::')[-1] %>'
8
+
9
+ <% normalized_fields.each do |f| %> <%= f.to_ruby %>
10
+ <% end %>end
15
11
  <% end -%>
@@ -1,20 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  <% module_namespacing_when_supported do -%>
4
- module Resolvers
5
- class <%= resolver_name %> < Ibrain::Resolvers::BaseResolver
6
- # TODO: define description describe about this mutation
7
- # description
4
+ class Resolvers::<%= resolver_name %> < Ibrain::Resolvers::BaseResolver
5
+ # TODO: define description describe about this mutation
6
+ # description
8
7
 
9
- # TODO: define return fields
10
- type Types::Objects::<%= model_name.capitalize %>Type, null: false
8
+ # TODO: define return fields
9
+ type Types::Objects::<%= model_name.capitalize %>Type, null: false
11
10
 
12
- argument :id, ID, required: true, description: 'TODO: describe about this argument'
11
+ argument :id, ID, required: true, description: 'TODO: describe about this argument'
13
12
 
14
- # TODO: define resolve method
15
- def resolve(args)
16
- <%= model_name.capitalize %>Repository.find(args)
17
- end
13
+ # TODO: define resolve method
14
+ def resolve(args)
15
+ <%= model_name.capitalize %>Repository.find(args)
18
16
  end
19
17
  end
20
18
  <% end -%>
@@ -1,18 +1,16 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  <% module_namespacing_when_supported do -%>
4
- module Resolvers
5
- class <%= resolver_name %> < <%= resolver_name %>Aggregate
6
- # TODO: define description describe about this mutation
7
- # description
4
+ class Resolvers::<%= resolver_name %> < <%= resolver_name %>Aggregate
5
+ # TODO: define description describe about this mutation
6
+ # description
8
7
 
9
- # TODO: define return fields
10
- type [Types::Objects::<%= model_name.capitalize %>Type], null: false
8
+ # TODO: define return fields
9
+ type [Types::Objects::<%= model_name.capitalize %>Type], null: false
11
10
 
12
- # TODO: define resolve method
13
- def resolve(args)
14
- super(args).paginate(args)
15
- end
11
+ # TODO: define resolve method
12
+ def resolve(args)
13
+ super(args).paginate(args)
16
14
  end
17
15
  end
18
16
  <% end -%>