Sha256: 2e48eae8dc7b5925e983acb49940a9dd5ddb52858d5b8ec2206610579fe73dd0

Contents?: true

Size: 1.02 KB

Versions: 6

Compression:

Stored size: 1.02 KB

Contents

module GraphqlDevise
  module MountMethod
    module OperationPreparers
      class DefaultOperationPreparer
        def initialize(selected_operations:, custom_keys:, mapping_name:, preparer:)
          @selected_operations = selected_operations
          @custom_keys         = custom_keys
          @mapping_name        = mapping_name
          @preparer            = preparer
        end

        def call
          @selected_operations.except(*@custom_keys).each_with_object({}) do |(action, operation), result|
            mapped_action = "#{@mapping_name}_#{action}"

            result[mapped_action.to_sym] = [
              OperationPreparers::GqlNameSetter.new(mapped_action),
              @preparer,
              OperationPreparers::ResourceNameSetter.new(@mapping_name)
            ].reduce(child_class(operation)) { |prepared_operation, preparer| preparer.call(prepared_operation) }
          end
        end

        private

        def child_class(operation)
          Class.new(operation)
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
graphql_devise-0.12.0 lib/graphql_devise/mount_method/operation_preparers/default_operation_preparer.rb
graphql_devise-0.11.4 lib/graphql_devise/mount_method/operation_preparers/default_operation_preparer.rb
graphql_devise-0.11.3 lib/graphql_devise/mount_method/operation_preparers/default_operation_preparer.rb
graphql_devise-0.11.2 lib/graphql_devise/mount_method/operation_preparers/default_operation_preparer.rb
graphql_devise-0.11.1 lib/graphql_devise/mount_method/operation_preparers/default_operation_preparer.rb
graphql_devise-0.11.0 lib/graphql_devise/mount_method/operation_preparers/default_operation_preparer.rb