Sha256: 9d7569d897526a7e27821a9eafdb0916929800f2336bd97253ccc745770fff5c
Contents?: true
Size: 1.46 KB
Versions: 7
Compression:
Stored size: 1.46 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(value_objects: true) values .select { |v| v.key?(:resource) } .reject { |v| v[:interface] } .reject { |v| !value_objects && 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
7 entries across 7 versions & 1 rubygems