Skip to content

Commit 879f9c5

Browse files
committed
Namespace mount method related classes
1 parent f0c5a8d commit 879f9c5

13 files changed

Lines changed: 99 additions & 251 deletions

lib/graphql_devise.rb

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ class InvalidMountOptionsError < GraphqlDevise::Error; end
2424
require 'graphql_devise/detailed_user_error'
2525

2626
require 'graphql_devise/mount_method/options_validator'
27-
require 'graphql_devise/rails/queries_preparer'
28-
require 'graphql_devise/rails/mutations_preparer'
29-
require 'graphql_devise/rails/operation_checker'
30-
require 'graphql_devise/rails/operation_sanitizer'
27+
require 'graphql_devise/mount_method/queries_preparer'
28+
require 'graphql_devise/mount_method/mutations_preparer'
29+
require 'graphql_devise/mount_method/operation_sanitizer'
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
module GraphqlDevise
2+
module MountMethod
3+
class MutationsPreparer
4+
def self.call(resource:, mutations:, authenticatable_type:)
5+
new(resource: resource, mutations: mutations, authenticatable_type: authenticatable_type).call
6+
end
7+
8+
def initialize(resource:, mutations:, authenticatable_type:)
9+
@mapping_name = resource.underscore.tr('/', '_').to_sym
10+
@mutations = mutations
11+
@authenticatable_type = authenticatable_type
12+
end
13+
14+
def call
15+
@mutations.each_with_object({}) do |(action, mutation), result|
16+
mapped_action = "#{@mapping_name}_#{action}".to_sym
17+
new_mutation = Class.new(mutation)
18+
new_mutation.graphql_name(mapped_action.to_s.camelize(:upper))
19+
new_mutation.field(:authenticatable, @authenticatable_type, null: true)
20+
new_mutation.instance_variable_set(:@resource_name, @mapping_name)
21+
22+
result[mapped_action] = new_mutation
23+
end
24+
end
25+
end
26+
end
27+
end
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module GraphqlDevise
2+
module MountMethod
3+
class OperationSanitizer
4+
def self.call(default:, custom:, only:, skipped:)
5+
new(
6+
default: default,
7+
custom: custom,
8+
only: only,
9+
skipped: skipped
10+
).call
11+
end
12+
13+
def initialize(default:, custom:, only:, skipped:)
14+
@default = default
15+
@custom = custom
16+
@only = only
17+
@skipped = skipped
18+
end
19+
20+
def call
21+
result = @default.merge(@custom.slice(*operations_whitelist))
22+
result = result.slice(*@only) if @only.present?
23+
result = result.except(*@skipped) if @skipped.present?
24+
25+
result
26+
end
27+
28+
private
29+
30+
def operations_whitelist
31+
@default.keys
32+
end
33+
end
34+
end
35+
end
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
module GraphqlDevise
2+
module MountMethod
3+
class QueriesPreparer
4+
def self.call(resource:, queries:, authenticatable_type:)
5+
new(resource: resource, queries: queries, authenticatable_type: authenticatable_type).call
6+
end
7+
8+
def initialize(resource:, queries:, authenticatable_type:)
9+
@mapping_name = resource.underscore.tr('/', '_').to_sym
10+
@queries = queries
11+
@authenticatable_type = authenticatable_type
12+
end
13+
14+
def call
15+
@queries.each_with_object({}) do |(action, query), result|
16+
mapped_action = "#{@mapping_name}_#{action}".to_sym
17+
new_query = Class.new(query)
18+
new_query.graphql_name(mapped_action.to_s.camelize(:upper))
19+
new_query.type(@authenticatable_type, null: true)
20+
new_query.instance_variable_set(:@resource_name, @mapping_name)
21+
22+
result[mapped_action] = new_query
23+
end
24+
end
25+
end
26+
end
27+
end

lib/graphql_devise/rails/mutations_preparer.rb

Lines changed: 0 additions & 25 deletions
This file was deleted.

lib/graphql_devise/rails/operation_checker.rb

Lines changed: 0 additions & 59 deletions
This file was deleted.

lib/graphql_devise/rails/operation_sanitizer.rb

Lines changed: 0 additions & 33 deletions
This file was deleted.

lib/graphql_devise/rails/queries_preparer.rb

Lines changed: 0 additions & 25 deletions
This file was deleted.

lib/graphql_devise/rails/routes.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,17 +46,17 @@ def mount_graphql_devise_for(resource, options = {})
4646
skip: DEVISE_OPERATIONS
4747
)
4848

49-
prepared_mutations = GraphqlDevise::MutationsPreparer.call(
49+
prepared_mutations = GraphqlDevise::MountMethod::MutationsPreparer.call(
5050
resource: resource,
51-
mutations: GraphqlDevise::OperationSanitizer.call(
51+
mutations: GraphqlDevise::MountMethod::OperationSanitizer.call(
5252
default: GraphqlDevise::DefaultOperations::MUTATIONS, **param_operations
5353
),
5454
authenticatable_type: authenticatable_type
5555
)
5656

57-
prepared_queries = GraphqlDevise::QueriesPreparer.call(
57+
prepared_queries = GraphqlDevise::MountMethod::QueriesPreparer.call(
5858
resource: resource,
59-
queries: GraphqlDevise::OperationSanitizer.call(
59+
queries: GraphqlDevise::MountMethod::OperationSanitizer.call(
6060
default: GraphqlDevise::DefaultOperations::QUERIES, **param_operations
6161
),
6262
authenticatable_type: authenticatable_type

spec/operation_checker_spec.rb

Lines changed: 0 additions & 98 deletions
This file was deleted.

0 commit comments

Comments
 (0)