ibrain-core 0.4.5 → 0.4.6

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.
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 -%>