class GraphqlRails::Controller::ActionConfiguration
stores all graphql_rails contoller specific config
Attributes
attributes[R]
controller[R]
custom_return_type[R]
defined_at[R]
name[R]
pagination_options[R]
Public Class Methods
new(name:, controller:)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 26 def initialize(name:, controller:) @name = name @controller = controller @attributes = {} @action_options = {} end
Public Instance Methods
description(new_description = nil)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 55 def description(new_description = nil) if new_description @description = new_description self else @description end end
dup_with(name:, controller:, defined_at:)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 33 def dup_with(name:, controller:, defined_at:) dup.tap do |new_action| new_action.instance_variable_set(:@defined_at, defined_at) new_action.instance_variable_set(:@name, name) new_action.instance_variable_set(:@controller, controller) end end
initialize_copy(other)
click to toggle source
Calls superclass method
# File lib/graphql_rails/controller/action_configuration.rb, line 19 def initialize_copy(other) super @attributes = other.instance_variable_get(:@attributes).dup.transform_values(&:dup) @action_options = other.instance_variable_get(:@action_options).dup.transform_values(&:dup) @pagination_options = other.instance_variable_get(:@pagination_options)&.dup&.transform_values(&:dup) end
model(model_name = nil)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 70 def model(model_name = nil) if model_name @model = model_name self else @model || raise_missing_config_error end end
options(action_options = nil)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 41 def options(action_options = nil) @input_attribute_options ||= {} return @input_attribute_options if action_options.nil? @input_attribute_options[:input_format] = action_options[:input_format] if action_options[:input_format] self end
paginated(*args)
click to toggle source
Calls superclass method
GraphqlRails::InputConfigurable#paginated
# File lib/graphql_rails/controller/action_configuration.rb, line 50 def paginated(*args) @return_type = nil super end
return_type()
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 95 def return_type @return_type ||= build_return_type end
returns(custom_return_type)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 64 def returns(custom_return_type) @return_type = nil @custom_return_type = custom_return_type self end
returns_list(required_inner: true, required_list: true)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 86 def returns_list(required_inner: true, required_list: true) model_name = model.to_s model_name = "#{model_name}!" if required_inner list_name = "[#{model_name}]" list_name = "#{list_name}!" if required_list returns(list_name) end
returns_single(required: true)
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 79 def returns_single(required: true) model_name = model.to_s model_name = "#{model_name}!" if required returns(model_name) end
type_parser()
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 99 def type_parser @type_parser ||= Attributes::TypeParser.new(custom_return_type, paginated: paginated?) end
Private Instance Methods
build_return_type()
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 107 def build_return_type return raise_deprecation_error if custom_return_type.nil? if paginated? type_parser.graphql_model ? type_parser.graphql_model.graphql.connection_type : nil else type_parser.graphql_type end end
raise_deprecation_error()
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 117 def raise_deprecation_error message = \ 'Default return types are deprecated. ' \ "You need to manually set something like `action(:#{name}).returns('#{suggested_model_name}')`" full_backtrace = ([defined_at] + caller).compact raise DeprecatedDefaultModelError, message, full_backtrace end
raise_missing_config_error()
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 130 def raise_missing_config_error error_message = \ 'Default model for controller is not defined. To do so add `model(YourModel)`' raise MissingConfigurationError, error_message end
suggested_model_name()
click to toggle source
# File lib/graphql_rails/controller/action_configuration.rb, line 126 def suggested_model_name controller&.name.to_s.demodulize.sub(/Controller$/, '').singularize end