graphql_rails 2.3.0 → 3.0.0
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 +4 -4
- data/.github/workflows/ruby.yml +3 -2
- data/CHANGELOG.md +21 -0
- data/Gemfile.lock +76 -73
- data/docs/README.md +1 -1
- data/docs/components/controller.md +15 -1
- data/docs/components/model.md +130 -6
- data/docs/components/routes.md +20 -10
- data/graphql_rails.gemspec +1 -1
- data/lib/generators/graphql_rails/templates/graphql_controller.erb +1 -1
- data/lib/graphql_rails/attributes/attributable.rb +6 -0
- data/lib/graphql_rails/attributes/attribute.rb +22 -9
- data/lib/graphql_rails/attributes/attribute_configurable.rb +27 -0
- data/lib/graphql_rails/attributes/attribute_name_parser.rb +4 -4
- data/lib/graphql_rails/attributes/input_attribute.rb +7 -1
- data/lib/graphql_rails/attributes/type_parseable.rb +6 -7
- data/lib/graphql_rails/controller/action.rb +4 -4
- data/lib/graphql_rails/controller/action_configuration.rb +1 -1
- data/lib/graphql_rails/controller/build_controller_action_resolver.rb +4 -15
- data/lib/graphql_rails/controller/configuration.rb +7 -2
- data/lib/graphql_rails/controller/handle_controller_error.rb +65 -0
- data/lib/graphql_rails/controller/log_controller_action.rb +1 -0
- data/lib/graphql_rails/controller/request/format_errors.rb +1 -1
- data/lib/graphql_rails/controller/request.rb +3 -2
- data/lib/graphql_rails/controller.rb +9 -6
- data/lib/graphql_rails/decorator/relation_decorator.rb +2 -2
- data/lib/graphql_rails/errors/custom_execution_error.rb +1 -1
- data/lib/graphql_rails/errors/execution_error.rb +1 -1
- data/lib/graphql_rails/model/configuration.rb +15 -2
- data/lib/graphql_rails/model/find_or_build_graphql_input_type.rb +36 -0
- data/lib/graphql_rails/model/find_or_build_graphql_type.rb +47 -13
- data/lib/graphql_rails/model/find_or_build_graphql_type_class.rb +7 -3
- data/lib/graphql_rails/model/input.rb +3 -3
- data/lib/graphql_rails/router/event_route.rb +52 -0
- data/lib/graphql_rails/router/mutation_route.rb +1 -1
- data/lib/graphql_rails/router/query_route.rb +1 -1
- data/lib/graphql_rails/router/resource_routes_builder.rb +0 -8
- data/lib/graphql_rails/router/route.rb +12 -2
- data/lib/graphql_rails/router/schema_builder.rb +15 -10
- data/lib/graphql_rails/router.rb +8 -8
- data/lib/graphql_rails/rspec_controller_helpers.rb +17 -3
- data/lib/graphql_rails/types/hidable_by_group.rb +23 -3
- data/lib/graphql_rails/types/input_object_type.rb +16 -0
- data/lib/graphql_rails/version.rb +1 -1
- metadata +10 -14
- data/lib/graphql_rails/model/build_graphql_input_type.rb +0 -43
- data/lib/graphql_rails/router/subscription_route.rb +0 -22
| @@ -9,11 +9,13 @@ module GraphqlRails | |
| 9 9 |  | 
| 10 10 | 
             
                  include ::GraphqlRails::Service
         | 
| 11 11 |  | 
| 12 | 
            -
                  def initialize(name:, type_name:, description: nil)
         | 
| 12 | 
            +
                  def initialize(name:, type_name:, parent_class:, description: nil, implements: [])
         | 
| 13 13 | 
             
                    @name = name
         | 
| 14 14 | 
             
                    @type_name = type_name
         | 
| 15 15 | 
             
                    @description = description
         | 
| 16 16 | 
             
                    @new_class = false
         | 
| 17 | 
            +
                    @parent_class = parent_class
         | 
| 18 | 
            +
                    @implements = implements
         | 
| 17 19 | 
             
                  end
         | 
| 18 20 |  | 
| 19 21 | 
             
                  def klass
         | 
| @@ -27,15 +29,17 @@ module GraphqlRails | |
| 27 29 | 
             
                  private
         | 
| 28 30 |  | 
| 29 31 | 
             
                  attr_accessor :new_class
         | 
| 30 | 
            -
                  attr_reader :name, :type_name, :description
         | 
| 32 | 
            +
                  attr_reader :name, :type_name, :description, :parent_class, :implements
         | 
| 31 33 |  | 
| 32 34 | 
             
                  def build_graphql_type_klass
         | 
| 33 35 | 
             
                    graphql_type_name = name
         | 
| 34 36 | 
             
                    graphql_type_description = description
         | 
| 37 | 
            +
                    interfaces = implements
         | 
| 35 38 |  | 
| 36 | 
            -
                    graphql_type_klass = Class.new( | 
| 39 | 
            +
                    graphql_type_klass = Class.new(parent_class) do
         | 
| 37 40 | 
             
                      graphql_name(graphql_type_name)
         | 
| 38 41 | 
             
                      description(graphql_type_description)
         | 
| 42 | 
            +
                      interfaces.each { |interface| implements(interface) }
         | 
| 39 43 | 
             
                    end
         | 
| 40 44 |  | 
| 41 45 | 
             
                    self.new_class = true
         | 
| @@ -6,7 +6,7 @@ module GraphqlRails | |
| 6 6 | 
             
                class Input
         | 
| 7 7 | 
             
                  require 'graphql_rails/concerns/chainable_options'
         | 
| 8 8 | 
             
                  require 'graphql_rails/model/configurable'
         | 
| 9 | 
            -
                  require 'graphql_rails/model/ | 
| 9 | 
            +
                  require 'graphql_rails/model/find_or_build_graphql_input_type'
         | 
| 10 10 |  | 
| 11 11 | 
             
                  include Configurable
         | 
| 12 12 |  | 
| @@ -18,8 +18,8 @@ module GraphqlRails | |
| 18 18 | 
             
                  end
         | 
| 19 19 |  | 
| 20 20 | 
             
                  def graphql_input_type
         | 
| 21 | 
            -
                    @graphql_input_type ||=  | 
| 22 | 
            -
                      name: name, description: description, attributes: attributes
         | 
| 21 | 
            +
                    @graphql_input_type ||= FindOrBuildGraphqlInputType.call(
         | 
| 22 | 
            +
                      name: name, description: description, attributes: attributes, type_name: type_name
         | 
| 23 23 | 
             
                    )
         | 
| 24 24 | 
             
                  end
         | 
| 25 25 |  | 
| @@ -0,0 +1,52 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative 'route'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module GraphqlRails
         | 
| 6 | 
            +
              class Router
         | 
| 7 | 
            +
                # stores subscription type graphql action info
         | 
| 8 | 
            +
                class EventRoute
         | 
| 9 | 
            +
                  attr_reader :name, :module_name, :subscription_class, :groups, :scope_names
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def initialize(name, subscription_class: nil, groups: nil, scope_names: [], **options)
         | 
| 12 | 
            +
                    @name = name.to_s.camelize(:lower)
         | 
| 13 | 
            +
                    @module_name = options[:module].to_s
         | 
| 14 | 
            +
                    @groups = groups
         | 
| 15 | 
            +
                    @subscription_class = subscription_class
         | 
| 16 | 
            +
                    @scope_names = scope_names
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  def show_in_group?(group_name)
         | 
| 20 | 
            +
                    return true if groups.nil? || groups.empty?
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    groups.include?(group_name&.to_sym)
         | 
| 23 | 
            +
                  end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
                  def field_options
         | 
| 26 | 
            +
                    { subscription: subscription }
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  def subscription
         | 
| 30 | 
            +
                    if subscription_class.present?
         | 
| 31 | 
            +
                      subscription_class.is_a?(String) ? Object.const_get(subscription_class) : subscription_class
         | 
| 32 | 
            +
                    else
         | 
| 33 | 
            +
                      klass_name = ['subscriptions/', name.underscore, 'subscription'].join('_').camelize
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                      Object.const_get(klass_name)
         | 
| 36 | 
            +
                    end
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  def mutation?
         | 
| 40 | 
            +
                    false
         | 
| 41 | 
            +
                  end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  def query?
         | 
| 44 | 
            +
                    false
         | 
| 45 | 
            +
                  end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                  def event?
         | 
| 48 | 
            +
                    true
         | 
| 49 | 
            +
                  end
         | 
| 50 | 
            +
                end
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| @@ -28,10 +28,6 @@ module GraphqlRails | |
| 28 28 | 
             
                    routes << build_mutation(*args, **kwargs)
         | 
| 29 29 | 
             
                  end
         | 
| 30 30 |  | 
| 31 | 
            -
                  def subscription(*args, **kwargs)
         | 
| 32 | 
            -
                    routes << build_subscription(*args, **kwargs)
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
             | 
| 35 31 | 
             
                  private
         | 
| 36 32 |  | 
| 37 33 | 
             
                  attr_reader :autogenerated_action_names, :name, :options
         | 
| @@ -66,10 +62,6 @@ module GraphqlRails | |
| 66 62 | 
             
                    build_route(QueryRoute, *args, **kwargs)
         | 
| 67 63 | 
             
                  end
         | 
| 68 64 |  | 
| 69 | 
            -
                  def build_subscription(*args, **kwargs)
         | 
| 70 | 
            -
                    build_route(SubscriptionRoute, *args, **kwargs)
         | 
| 71 | 
            -
                  end
         | 
| 72 | 
            -
             | 
| 73 65 | 
             
                  # rubocop:disable Metrics/ParameterLists
         | 
| 74 66 | 
             
                  def build_route(builder, action, prefix: action, suffix: false, on: :member, **custom_options)
         | 
| 75 67 | 
             
                    if suffix == true
         | 
| @@ -1,6 +1,7 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 3 | 
             
            require_relative '../controller/build_controller_action_resolver'
         | 
| 4 | 
            +
            require 'graphql_rails/controller/action'
         | 
| 4 5 |  | 
| 5 6 | 
             
            module GraphqlRails
         | 
| 6 7 | 
             
              class Router
         | 
| @@ -38,7 +39,7 @@ module GraphqlRails | |
| 38 39 | 
             
                    if function
         | 
| 39 40 | 
             
                      { function: function }
         | 
| 40 41 | 
             
                    else
         | 
| 41 | 
            -
                      { resolver: resolver }
         | 
| 42 | 
            +
                      { resolver: resolver, extras: [:lookahead], **resolver_options }
         | 
| 42 43 | 
             
                    end
         | 
| 43 44 | 
             
                  end
         | 
| 44 45 |  | 
| @@ -47,7 +48,16 @@ module GraphqlRails | |
| 47 48 | 
             
                  attr_reader :function
         | 
| 48 49 |  | 
| 49 50 | 
             
                  def resolver
         | 
| 50 | 
            -
                    @resolver ||= Controller::BuildControllerActionResolver.call( | 
| 51 | 
            +
                    @resolver ||= Controller::BuildControllerActionResolver.call(action: action)
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                  def action
         | 
| 55 | 
            +
                    @action ||= Controller::Action.new(self).tap(&:return_type)
         | 
| 56 | 
            +
                  end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                  def resolver_options
         | 
| 59 | 
            +
                    action_config = action.action_config
         | 
| 60 | 
            +
                    action_config.pagination_options || {}
         | 
| 51 61 | 
             
                  end
         | 
| 52 62 | 
             
                end
         | 
| 53 63 | 
             
              end
         | 
| @@ -7,12 +7,12 @@ module GraphqlRails | |
| 7 7 | 
             
                  require_relative './plain_cursor_encoder'
         | 
| 8 8 | 
             
                  require_relative './build_schema_action_type'
         | 
| 9 9 |  | 
| 10 | 
            -
                  attr_reader :queries, :mutations, : | 
| 10 | 
            +
                  attr_reader :queries, :mutations, :events, :raw_actions
         | 
| 11 11 |  | 
| 12 | 
            -
                  def initialize(queries:, mutations:,  | 
| 12 | 
            +
                  def initialize(queries:, mutations:, events:, raw_actions:, group: nil)
         | 
| 13 13 | 
             
                    @queries = queries
         | 
| 14 14 | 
             
                    @mutations = mutations
         | 
| 15 | 
            -
                    @ | 
| 15 | 
            +
                    @events = events
         | 
| 16 16 | 
             
                    @raw_actions = raw_actions
         | 
| 17 17 | 
             
                    @group = group
         | 
| 18 18 | 
             
                  end
         | 
| @@ -20,26 +20,31 @@ module GraphqlRails | |
| 20 20 | 
             
                  def call
         | 
| 21 21 | 
             
                    query_type = build_group_type('Query', queries)
         | 
| 22 22 | 
             
                    mutation_type = build_group_type('Mutation', mutations)
         | 
| 23 | 
            -
                    subscription_type = build_group_type('Subscription',  | 
| 24 | 
            -
                    raw = raw_actions
         | 
| 23 | 
            +
                    subscription_type = build_group_type('Subscription', events)
         | 
| 25 24 |  | 
| 25 | 
            +
                    define_schema_class(query_type, mutation_type, subscription_type, raw_actions)
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  private
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  attr_reader :group
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                  # rubocop:disable Metrics/MethodLength
         | 
| 33 | 
            +
                  def define_schema_class(query_type, mutation_type, subscription_type, raw)
         | 
| 26 34 | 
             
                    Class.new(GraphQL::Schema) do
         | 
| 27 35 | 
             
                      connections.add(
         | 
| 28 36 | 
             
                        GraphqlRails::Decorator::RelationDecorator,
         | 
| 29 37 | 
             
                        GraphQL::Pagination::ActiveRecordRelationConnection
         | 
| 30 38 | 
             
                      )
         | 
| 31 39 | 
             
                      cursor_encoder(Router::PlainCursorEncoder)
         | 
| 32 | 
            -
                      raw.each { |action| send(action[:name], *action[:args], &action[:block]) }
         | 
| 40 | 
            +
                      raw.each { |action| send(action[:name], *action[:args], **action[:kwargs], &action[:block]) }
         | 
| 33 41 |  | 
| 34 42 | 
             
                      query(query_type) if query_type
         | 
| 35 43 | 
             
                      mutation(mutation_type) if mutation_type
         | 
| 36 44 | 
             
                      subscription(subscription_type) if subscription_type
         | 
| 37 45 | 
             
                    end
         | 
| 38 46 | 
             
                  end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                  private
         | 
| 41 | 
            -
             | 
| 42 | 
            -
                  attr_reader :group
         | 
| 47 | 
            +
                  # rubocop:enable Metrics/MethodLength
         | 
| 43 48 |  | 
| 44 49 | 
             
                  def build_group_type(type_name, routes)
         | 
| 45 50 | 
             
                    group_name = group
         | 
    
        data/lib/graphql_rails/router.rb
    CHANGED
    
    | @@ -5,7 +5,7 @@ require 'active_support/core_ext/string/inflections' | |
| 5 5 | 
             
            require 'graphql_rails/router/schema_builder'
         | 
| 6 6 | 
             
            require 'graphql_rails/router/mutation_route'
         | 
| 7 7 | 
             
            require 'graphql_rails/router/query_route'
         | 
| 8 | 
            -
            require 'graphql_rails/router/ | 
| 8 | 
            +
            require 'graphql_rails/router/event_route'
         | 
| 9 9 | 
             
            require 'graphql_rails/router/resource_routes_builder'
         | 
| 10 10 |  | 
| 11 11 | 
             
            module GraphqlRails
         | 
| @@ -63,13 +63,13 @@ module GraphqlRails | |
| 63 63 | 
             
                  routes << build_route(MutationRoute, name, **options)
         | 
| 64 64 | 
             
                end
         | 
| 65 65 |  | 
| 66 | 
            -
                def  | 
| 67 | 
            -
                  routes << build_route( | 
| 66 | 
            +
                def event(name, **options)
         | 
| 67 | 
            +
                  routes << build_route(EventRoute, name, **options)
         | 
| 68 68 | 
             
                end
         | 
| 69 69 |  | 
| 70 70 | 
             
                RAW_ACTION_NAMES.each do |action_name|
         | 
| 71 | 
            -
                  define_method(action_name) do |*args, &block|
         | 
| 72 | 
            -
                    add_raw_action(action_name, *args, &block)
         | 
| 71 | 
            +
                  define_method(action_name) do |*args, **kwargs, &block|
         | 
| 72 | 
            +
                    add_raw_action(action_name, *args, **kwargs, &block)
         | 
| 73 73 | 
             
                  end
         | 
| 74 74 | 
             
                end
         | 
| 75 75 |  | 
| @@ -77,7 +77,7 @@ module GraphqlRails | |
| 77 77 | 
             
                  @graphql_schema[group&.to_sym] ||= SchemaBuilder.new(
         | 
| 78 78 | 
             
                    queries: routes.select(&:query?),
         | 
| 79 79 | 
             
                    mutations: routes.select(&:mutation?),
         | 
| 80 | 
            -
                     | 
| 80 | 
            +
                    events: routes.select(&:event?),
         | 
| 81 81 | 
             
                    raw_actions: raw_graphql_actions,
         | 
| 82 82 | 
             
                    group: group
         | 
| 83 83 | 
             
                  ).call
         | 
| @@ -110,8 +110,8 @@ module GraphqlRails | |
| 110 110 | 
             
                  { module_name: module_name, group_names: group_names, scope_names: scope_names }
         | 
| 111 111 | 
             
                end
         | 
| 112 112 |  | 
| 113 | 
            -
                def add_raw_action(name, *args, &block)
         | 
| 114 | 
            -
                  raw_graphql_actions << { name: name, args: args, block: block }
         | 
| 113 | 
            +
                def add_raw_action(name, *args, **kwargs, &block)
         | 
| 114 | 
            +
                  raw_graphql_actions << { name: name, args: args, kwargs: kwargs, block: block }
         | 
| 115 115 | 
             
                end
         | 
| 116 116 |  | 
| 117 117 | 
             
                def build_route(route_builder, name, **options)
         | 
| @@ -46,6 +46,14 @@ module GraphqlRails | |
| 46 46 | 
             
                    !success?
         | 
| 47 47 | 
             
                  end
         | 
| 48 48 |  | 
| 49 | 
            +
                  def controller
         | 
| 50 | 
            +
                    request.controller
         | 
| 51 | 
            +
                  end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                  def action_name
         | 
| 54 | 
            +
                    request.action_name
         | 
| 55 | 
            +
                  end
         | 
| 56 | 
            +
             | 
| 49 57 | 
             
                  private
         | 
| 50 58 |  | 
| 51 59 | 
             
                  attr_reader :request
         | 
| @@ -94,15 +102,21 @@ module GraphqlRails | |
| 94 102 |  | 
| 95 103 | 
             
                # controller request object more suitable for testing
         | 
| 96 104 | 
             
                class Request < GraphqlRails::Controller::Request
         | 
| 97 | 
            -
                   | 
| 98 | 
            -
             | 
| 105 | 
            +
                  attr_reader :controller, :action_name
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  def initialize(params, context, controller: nil, action_name: nil)
         | 
| 108 | 
            +
                    inputs = params || {}
         | 
| 109 | 
            +
                    inputs = inputs.merge(lookahead: ::GraphQL::Execution::Lookahead::NullLookahead.new)
         | 
| 110 | 
            +
                    @controller = controller
         | 
| 111 | 
            +
                    @action_name = action_name
         | 
| 112 | 
            +
                    super(nil, inputs, context)
         | 
| 99 113 | 
             
                  end
         | 
| 100 114 | 
             
                end
         | 
| 101 115 |  | 
| 102 116 | 
             
                def query(query_name, params: {}, context: {})
         | 
| 103 117 | 
             
                  schema_builder = SingleControllerSchemaBuilder.new(described_class)
         | 
| 104 118 | 
             
                  context_object = FakeContext.new(values: context, schema: schema_builder.call)
         | 
| 105 | 
            -
                  request = Request.new(params, context_object)
         | 
| 119 | 
            +
                  request = Request.new(params, context_object, controller: described_class, action_name: query_name)
         | 
| 106 120 | 
             
                  described_class.new(request).call(query_name)
         | 
| 107 121 |  | 
| 108 122 | 
             
                  @response = Response.new(request)
         | 
| @@ -6,10 +6,11 @@ module GraphqlRails | |
| 6 6 | 
             
              module Types
         | 
| 7 7 | 
             
                # Add visibility option based on groups
         | 
| 8 8 | 
             
                module HidableByGroup
         | 
| 9 | 
            -
                  def initialize(*args, groups: [], **kwargs, &block)
         | 
| 9 | 
            +
                  def initialize(*args, groups: [], hidden_in_groups: [], **kwargs, &block)
         | 
| 10 10 | 
             
                    super(*args, **kwargs, &block)
         | 
| 11 11 |  | 
| 12 | 
            -
                    @ | 
| 12 | 
            +
                    @hidden_in_groups = hidden_in_groups.map(&:to_s)
         | 
| 13 | 
            +
                    @groups = groups.map(&:to_s) - @hidden_in_groups
         | 
| 13 14 | 
             
                  end
         | 
| 14 15 |  | 
| 15 16 | 
             
                  def visible?(context)
         | 
| @@ -22,10 +23,29 @@ module GraphqlRails | |
| 22 23 | 
             
                    @groups
         | 
| 23 24 | 
             
                  end
         | 
| 24 25 |  | 
| 26 | 
            +
                  def hidden_in_groups
         | 
| 27 | 
            +
                    @hidden_in_groups
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
             | 
| 25 30 | 
             
                  def visible_in_context_group?(context)
         | 
| 31 | 
            +
                    group = context_graphql_group(context)
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    return true if no_visibility_configuration?(group)
         | 
| 34 | 
            +
                    return groups.include?(group) unless groups.empty?
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    !hidden_in_groups.include?(group)
         | 
| 37 | 
            +
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  def no_visibility_configuration?(group)
         | 
| 40 | 
            +
                    return true if group.nil?
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    groups.empty? && hidden_in_groups.empty?
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def context_graphql_group(context)
         | 
| 26 46 | 
             
                    group = context[:graphql_group] || context['graphql_group']
         | 
| 27 47 |  | 
| 28 | 
            -
                    group.nil?  | 
| 48 | 
            +
                    group.nil? ? nil : group.to_s
         | 
| 29 49 | 
             
                  end
         | 
| 30 50 | 
             
                end
         | 
| 31 51 | 
             
              end
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'graphql_rails/types/argument_type'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module GraphqlRails
         | 
| 6 | 
            +
              module Types
         | 
| 7 | 
            +
                # Base graphql type class for all GraphqlRails models
         | 
| 8 | 
            +
                class InputObjectType < GraphQL::Schema::InputObject
         | 
| 9 | 
            +
                  argument_class(GraphqlRails::Types::ArgumentType)
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                  def self.inspect
         | 
| 12 | 
            +
                    "#{GraphQL::Schema::InputObject}(#{graphql_name})"
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
                end
         | 
| 15 | 
            +
              end
         | 
| 16 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,35 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: graphql_rails
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version:  | 
| 4 | 
            +
              version: 3.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Povilas Jurčys
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-05-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: graphql
         | 
| 15 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 16 | 
             
                requirements:
         | 
| 17 | 
            -
                - -  | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: '1.12'
         | 
| 20 | 
            -
                - - ">="
         | 
| 17 | 
            +
                - - '='
         | 
| 21 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 22 | 
            -
                    version: 1. | 
| 19 | 
            +
                    version: 2.1.7
         | 
| 23 20 | 
             
              type: :runtime
         | 
| 24 21 | 
             
              prerelease: false
         | 
| 25 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 26 23 | 
             
                requirements:
         | 
| 27 | 
            -
                - -  | 
| 28 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 29 | 
            -
                    version: '1.12'
         | 
| 30 | 
            -
                - - ">="
         | 
| 24 | 
            +
                - - '='
         | 
| 31 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            -
                    version: 1. | 
| 26 | 
            +
                    version: 2.1.7
         | 
| 33 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 34 28 | 
             
              name: activesupport
         | 
| 35 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -190,6 +184,7 @@ files: | |
| 190 184 | 
             
            - lib/graphql_rails/controller/build_controller_action_resolver.rb
         | 
| 191 185 | 
             
            - lib/graphql_rails/controller/build_controller_action_resolver/controller_action_resolver.rb
         | 
| 192 186 | 
             
            - lib/graphql_rails/controller/configuration.rb
         | 
| 187 | 
            +
            - lib/graphql_rails/controller/handle_controller_error.rb
         | 
| 193 188 | 
             
            - lib/graphql_rails/controller/log_controller_action.rb
         | 
| 194 189 | 
             
            - lib/graphql_rails/controller/request.rb
         | 
| 195 190 | 
             
            - lib/graphql_rails/controller/request/format_errors.rb
         | 
| @@ -209,10 +204,10 @@ files: | |
| 209 204 | 
             
            - lib/graphql_rails/model/build_connection_type.rb
         | 
| 210 205 | 
             
            - lib/graphql_rails/model/build_connection_type/count_items.rb
         | 
| 211 206 | 
             
            - lib/graphql_rails/model/build_enum_type.rb
         | 
| 212 | 
            -
            - lib/graphql_rails/model/build_graphql_input_type.rb
         | 
| 213 207 | 
             
            - lib/graphql_rails/model/call_graphql_model_method.rb
         | 
| 214 208 | 
             
            - lib/graphql_rails/model/configurable.rb
         | 
| 215 209 | 
             
            - lib/graphql_rails/model/configuration.rb
         | 
| 210 | 
            +
            - lib/graphql_rails/model/find_or_build_graphql_input_type.rb
         | 
| 216 211 | 
             
            - lib/graphql_rails/model/find_or_build_graphql_type.rb
         | 
| 217 212 | 
             
            - lib/graphql_rails/model/find_or_build_graphql_type_class.rb
         | 
| 218 213 | 
             
            - lib/graphql_rails/model/input.rb
         | 
| @@ -220,13 +215,13 @@ files: | |
| 220 215 | 
             
            - lib/graphql_rails/railtie.rb
         | 
| 221 216 | 
             
            - lib/graphql_rails/router.rb
         | 
| 222 217 | 
             
            - lib/graphql_rails/router/build_schema_action_type.rb
         | 
| 218 | 
            +
            - lib/graphql_rails/router/event_route.rb
         | 
| 223 219 | 
             
            - lib/graphql_rails/router/mutation_route.rb
         | 
| 224 220 | 
             
            - lib/graphql_rails/router/plain_cursor_encoder.rb
         | 
| 225 221 | 
             
            - lib/graphql_rails/router/query_route.rb
         | 
| 226 222 | 
             
            - lib/graphql_rails/router/resource_routes_builder.rb
         | 
| 227 223 | 
             
            - lib/graphql_rails/router/route.rb
         | 
| 228 224 | 
             
            - lib/graphql_rails/router/schema_builder.rb
         | 
| 229 | 
            -
            - lib/graphql_rails/router/subscription_route.rb
         | 
| 230 225 | 
             
            - lib/graphql_rails/rspec_controller_helpers.rb
         | 
| 231 226 | 
             
            - lib/graphql_rails/tasks/dump_graphql_schema.rb
         | 
| 232 227 | 
             
            - lib/graphql_rails/tasks/dump_graphql_schemas.rb
         | 
| @@ -234,6 +229,7 @@ files: | |
| 234 229 | 
             
            - lib/graphql_rails/types/argument_type.rb
         | 
| 235 230 | 
             
            - lib/graphql_rails/types/field_type.rb
         | 
| 236 231 | 
             
            - lib/graphql_rails/types/hidable_by_group.rb
         | 
| 232 | 
            +
            - lib/graphql_rails/types/input_object_type.rb
         | 
| 237 233 | 
             
            - lib/graphql_rails/types/object_type.rb
         | 
| 238 234 | 
             
            - lib/graphql_rails/version.rb
         | 
| 239 235 | 
             
            homepage: https://github.com/samesystem/graphql_rails
         | 
| @@ -1,43 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'graphql_rails/types/argument_type'
         | 
| 4 | 
            -
            require 'graphql_rails/concerns/service'
         | 
| 5 | 
            -
             | 
| 6 | 
            -
            module GraphqlRails
         | 
| 7 | 
            -
              module Model
         | 
| 8 | 
            -
                # stores information about model specific config, like attributes and types
         | 
| 9 | 
            -
                class BuildGraphqlInputType
         | 
| 10 | 
            -
                  include ::GraphqlRails::Service
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                  def initialize(name:, description: nil, attributes:)
         | 
| 13 | 
            -
                    @name = name
         | 
| 14 | 
            -
                    @attributes = attributes
         | 
| 15 | 
            -
                    @description = description
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                  def call
         | 
| 19 | 
            -
                    type_name = name
         | 
| 20 | 
            -
                    type_description = description
         | 
| 21 | 
            -
                    type_attributes = attributes
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                    Class.new(GraphQL::Schema::InputObject) do
         | 
| 24 | 
            -
                      argument_class(GraphqlRails::Types::ArgumentType)
         | 
| 25 | 
            -
                      graphql_name(type_name)
         | 
| 26 | 
            -
                      description(type_description)
         | 
| 27 | 
            -
             | 
| 28 | 
            -
                      type_attributes.each_value do |type_attribute|
         | 
| 29 | 
            -
                        argument(*type_attribute.input_argument_args, **type_attribute.input_argument_options)
         | 
| 30 | 
            -
                      end
         | 
| 31 | 
            -
             | 
| 32 | 
            -
                      def self.inspect
         | 
| 33 | 
            -
                        "#{GraphQL::Schema::InputObject}(#{graphql_name})"
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
             | 
| 38 | 
            -
                  private
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                  attr_reader :model_configuration, :attributes, :name, :description
         | 
| 41 | 
            -
                end
         | 
| 42 | 
            -
              end
         | 
| 43 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require_relative 'route'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module GraphqlRails
         | 
| 6 | 
            -
              class Router
         | 
| 7 | 
            -
                # stores subscription type graphql action info
         | 
| 8 | 
            -
                class SubscriptionRoute < Route
         | 
| 9 | 
            -
                  def query?
         | 
| 10 | 
            -
                    false
         | 
| 11 | 
            -
                  end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                  def mutation?
         | 
| 14 | 
            -
                    false
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
             | 
| 17 | 
            -
                  def subscription?
         | 
| 18 | 
            -
                    true
         | 
| 19 | 
            -
                  end
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         |