Sha256: 74a1daacdf6111a6478a57ae32da5be3c41643230579d02a5a18bb0619162d9e

Contents?: true

Size: 1.07 KB

Versions: 2

Compression:

Stored size: 1.07 KB

Contents

module GraphitiGraphQL
  module GraphitiSchema
    class Wrapper
      attr_reader :schema

      def initialize(schema)
        @schema = schema
      end

      def get_resource(name)
        config = schema[:resources].find { |r| r[:name] == name }
        raise "Could not find resource #{name} in schema" unless config
        Resource.new(self, schema[:resources].find { |r| r[:name] == name })
      end

      def resources
        schema[:resources].map { |r| get_resource(r[:name]) }
      end

      # TODO some work here, dupes, refer back, etc
      def merge_remotes!
        resources.select(&:remote?).each do |resource|
          remote_schema = resource.fetch_remote_schema!
          remote_schema[:resources].each do |remote_config|
            unless resources.map(&:name).include?(remote_config[:name])
              remote_config[:name] = resource.name
              schema[:resources].reject! { |r| r[:name] == resource.name }
              schema[:resources] << remote_config
              schema
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
graphiti_graphql-0.1.1 lib/graphiti_graphql/graphiti_schema/wrapper.rb
graphiti_graphql-0.1.0 lib/graphiti_graphql/graphiti_schema/wrapper.rb