Sha256: 19b618311bcd4b61a635cdb0c00dfe02d19e083c244ff580020936f6cc541c4b

Contents?: true

Size: 1.29 KB

Versions: 3

Compression:

Stored size: 1.29 KB

Contents

module GraphitiGql
  class Schema
    class Query
      def initialize(resources, existing_query: nil)
        @resources = resources
        @query_class = Class.new(existing_query || Schema.base_object)
        @query_class.graphql_name "Query"
      end

      def build
        @resources.each { |resource| ResourceType.new(resource).build }
        define_entrypoints
        add_value_objects
        add_relationships
        @query_class
      end

      private

      def registry
        Registry.instance
      end

      def define_entrypoints
        registry.resource_types.each do |registered|
          if registered[:resource].graphql_entrypoint
            Fields::Index.new(registered).apply(@query_class)
            Fields::Show.new(registered).apply(@query_class)
          end
        end
      end

      def add_relationships
        registry.resource_types.each do |registered|
          resource, type = registered[:resource], registered[:type]
          ResourceType.add_relationships(resource, type)
        end
      end

      def add_value_objects
        registry.resource_types(value_objects: false).each do |registered|
          resource, type = registered[:resource], registered[:type]
          ResourceType.add_value_objects(resource, type)
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
graphiti_gql-0.2.34 lib/graphiti_gql/schema/query.rb
graphiti_gql-0.2.33 lib/graphiti_gql/schema/query.rb
graphiti_gql-0.2.32 lib/graphiti_gql/schema/query.rb