class GraphqlRails::Model::FindOrBuildGraphqlTypeClass

Initializes class to define graphql type and fields.

Attributes

description[R]
name[R]
new_class[RW]
type_name[R]

Public Class Methods

new(name:, type_name:, description: nil) click to toggle source
# File lib/graphql_rails/model/find_or_build_graphql_type_class.rb, line 11
def initialize(name:, type_name:, description: nil)
  @name = name
  @type_name = type_name
  @description = description
  @new_class = false
end

Public Instance Methods

klass() click to toggle source
# File lib/graphql_rails/model/find_or_build_graphql_type_class.rb, line 18
def klass
  @klass ||= Object.const_defined?(type_name) && Object.const_get(type_name) || build_graphql_type_klass
end
new_class?() click to toggle source
# File lib/graphql_rails/model/find_or_build_graphql_type_class.rb, line 22
def new_class?
  new_class
end

Private Instance Methods

build_graphql_type_klass() click to toggle source
# File lib/graphql_rails/model/find_or_build_graphql_type_class.rb, line 31
def build_graphql_type_klass
  graphql_type_name = name
  graphql_type_description = description

  graphql_type_klass = Class.new(GraphQL::Schema::Object) do
    graphql_name(graphql_type_name)
    description(graphql_type_description)
  end

  self.new_class = true

  Object.const_set(type_name, graphql_type_klass)
end