Sha256: 57fd2a21306988a04206b93677522c41961704d9ad0d32a2d78f4f2054780405
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
module GraphitiGql class Schema class Registry include Singleton def initialize clear end def get(object, interface: true) @data[key_for(object, interface: interface)] end def set(resource, type, interface: true) @data[key_for(resource, interface: interface)] = { resource: resource, type: type, interface: interface } end def key_for(object, interface: true) if object.ancestors.include?(Graphiti::Resource) key = key_for_resource(object) if object.polymorphic? if !object.polymorphic_child? && interface key = "I#{key}" end end key else raise 'unknown object!' end end def clear @data = {} end def []=(key, value) @data[key] = value end def [](key) @data[key] end def key?(key) @data.key?(key) end def values @data.values end # When polymorphic parent, returns the Interface not the Class def resource_types values .select { |v| v.key?(:resource) } .reject { |v| v[:interface] || v[:resource].value_object? } .map { |registered| get(registered[:resource]) } end private def key_for_resource(resource) resource.graphql_name end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphiti_gql-0.2.31 | lib/graphiti_gql/schema/registry.rb |
graphiti_gql-0.2.30 | lib/graphiti_gql/schema/registry.rb |