Class: ArSerializer::GraphQL::SchemaClass

Inherits:
Object
  • Object
show all
Includes:
Serializable
Defined in:
lib/ar_serializer/graphql/types.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(klass) ⇒ SchemaClass

Returns a new instance of SchemaClass.



66
67
68
69
# File 'lib/ar_serializer/graphql/types.rb', line 66

def initialize(klass)
  @klass = klass
  @query_type = SerializableTypeClass.new klass
end

Instance Attribute Details

#klassObject (readonly)

Returns the value of attribute klass.



65
66
67
# File 'lib/ar_serializer/graphql/types.rb', line 65

def klass
  @klass
end

#query_typeObject (readonly)

Returns the value of attribute query_type.



65
66
67
# File 'lib/ar_serializer/graphql/types.rb', line 65

def query_type
  @query_type
end

Instance Method Details

#collect_typesObject



71
72
73
74
75
76
77
78
79
80
# File 'lib/ar_serializer/graphql/types.rb', line 71

def collect_types
  types = {}
  klass._serializer_field_keys.each do |name|
    fc = FieldClass.new name, klass._serializer_field_info(name)
    fc.collect_types types
  end
  type_symbols, type_classes = types.keys.partition { |t| t.is_a? Symbol }
  type_classes << TypeClass.from(klass)
  [type_symbols.sort, type_classes.sort_by(&:name)]
end

#typesObject



82
83
84
85
# File 'lib/ar_serializer/graphql/types.rb', line 82

def types
  types_symbols, klass_types = collect_types
  types_symbols.map { |t| ScalarTypeClass.new t } + klass_types
end