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.



58
59
60
61
# File 'lib/ar_serializer/graphql/types.rb', line 58

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

Instance Attribute Details

#klassObject (readonly)

Returns the value of attribute klass.



57
58
59
# File 'lib/ar_serializer/graphql/types.rb', line 57

def klass
  @klass
end

#query_typeObject (readonly)

Returns the value of attribute query_type.



57
58
59
# File 'lib/ar_serializer/graphql/types.rb', line 57

def query_type
  @query_type
end

Instance Method Details

#collect_typesObject



63
64
65
66
67
68
69
70
71
72
# File 'lib/ar_serializer/graphql/types.rb', line 63

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



74
75
76
77
# File 'lib/ar_serializer/graphql/types.rb', line 74

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