Sha256: 732174c98a08d849de6b8f830b233d88fd55d5934aeb4bfef5869b6ef7dc8264

Contents?: true

Size: 1.14 KB

Versions: 3

Compression:

Stored size: 1.14 KB

Contents

# frozen_string_literal: true

require 'graphql_rails/attribute'
require 'graphql_rails/model/graphql_type_builder'

module GraphqlRails
  module Model
    # stores information about model specific config, like attributes and types
    class Configuration
      attr_reader :attributes

      def initialize(model_class)
        @model_class = model_class
        @attributes = {}
      end

      def name(type_name = nil)
        @name ||= type_name
      end

      def description(description = nil)
        @description ||= description
      end

      def attribute(attribute_name, type: nil, hidden: false, property: attribute_name)
        attributes[attribute_name.to_s] = Attribute.new(attribute_name, type, hidden: hidden, property: property)
      end

      def graphql_type
        @graphql_type ||= begin
         type_name = name || name_by_class_name
         GrapqhlTypeBuilder.new(name: type_name, description: description, attributes: attributes).call
       end
      end

      private

      attr_reader :model_class

      def name_by_class_name
        @name_by_class_name ||= model_class.name.split('::').last
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
graphql_rails-0.2.2 lib/graphql_rails/model/configuration.rb
graphql_rails-0.2.1 lib/graphql_rails/model/configuration.rb
graphql_rails-0.2.0 lib/graphql_rails/model/configuration.rb