class GraphQL::FancyLoader::TypeGenerator

Public Class Methods

new(loader, name: loader.model.name) click to toggle source
# File lib/graphql/fancy_loader/type_generator.rb, line 6
def initialize(loader, name: loader.model.name)
  @loader = loader
  @name = name
end

Public Instance Methods

sorts_enum() click to toggle source
# File lib/graphql/fancy_loader/type_generator.rb, line 11
def sorts_enum
  @sorts_enum ||= begin
    sorts = @loader.sorts
    name = "#{@name}SortEnum"

    Class.new(GraphQL::Schema::Enum) do
      graphql_name name
      sorts.each_key do |sort_name|
        value(sort_name.to_s.underscore.upcase, value: sort_name)
      end
    end
  end
end
sorts_list() click to toggle source
# File lib/graphql/fancy_loader/type_generator.rb, line 37
def sorts_list
  @sorts_list ||= GraphQL::Schema::List.new(sorts_option)
end
sorts_option() click to toggle source
# File lib/graphql/fancy_loader/type_generator.rb, line 25
def sorts_option
  @sorts_option ||= begin
    enum = sorts_enum
    name = "#{@name}SortOption"
    Class.new(GraphQL::Schema::InputObject) do
      graphql_name name
      argument :on, enum, required: true
      argument :direction, GraphQL::SortDirection, required: true
    end
  end
end