module Graphiform

Constants

VERSION

Public Class Methods

configuration() click to toggle source
# File lib/graphiform.rb, line 23
def self.configuration
  @configuration ||= {
    scalar_mappings: {
      string: GraphQL::Types::String,
      text: GraphQL::Types::String,
      # nchar: GraphQL::Types::String,

      date: GraphQL::Types::ISO8601Date,

      time: GraphQL::Types::ISO8601DateTime,
      datetime: GraphQL::Types::ISO8601DateTime,
      timestamp: GraphQL::Types::ISO8601DateTime,

      integer: GraphQL::Types::Int,

      float: GraphQL::Types::Float,
      decimal: GraphQL::Types::Float,

      boolean: GraphQL::Types::Boolean,

      json: GraphQL::Types::JSON,
      jsonb: GraphQL::Types::JSON,
    },
  }
end
configure() { |configuration| ... } click to toggle source
# File lib/graphiform.rb, line 49
def self.configure
  yield(configuration)
end
create_skeleton() click to toggle source
# File lib/graphiform/skeleton.rb, line 5
def self.create_skeleton
  # Types
  Helpers.get_const_or_create('Types') do
    Module.new
  end

  Helpers.get_const_or_create('BaseObject', ::Types) do
    Class.new(::GraphQL::Schema::Object)
  end

  Helpers.get_const_or_create('BaseEdge', ::Types) do
    Class.new(::GraphQL::Types::Relay::BaseEdge)
  end

  Helpers.get_const_or_create('BaseConnection', ::Types) do
    Class.new(::GraphQL::Types::Relay::BaseConnection)
  end

  # Inputs
  Helpers.get_const_or_create('Inputs') do
    Module.new
  end

  Helpers.get_const_or_create('BaseInput', ::Inputs) do
    Class.new(::GraphQL::Schema::InputObject)
  end

  Helpers.get_const_or_create('Filters', ::Inputs) do
    Module.new
  end

  Helpers.get_const_or_create('BaseFilter', ::Inputs::Filters) do
    Class.new(::GraphQL::Schema::InputObject)
  end

  Helpers.get_const_or_create('Sorts', ::Inputs) do
    Module.new
  end

  Helpers.get_const_or_create('BaseSort', ::Inputs::Sorts) do
    Class.new(::GraphQL::Schema::InputObject)
  end

  Helpers.get_const_or_create('Groupings', ::Inputs) do
    Module.new
  end

  Helpers.get_const_or_create('BaseGrouping', ::Inputs::Groupings) do
    Class.new(::GraphQL::Schema::InputObject)
  end

  # Resolvers
  Helpers.get_const_or_create('Resolvers') do
    Module.new
  end

  Helpers.get_const_or_create('BaseResolver', ::Resolvers) do
    Class.new(::GraphQL::Schema::Resolver)
  end

  # Queries
  Helpers.get_const_or_create('Queries', ::Resolvers) do
    Module.new
  end

  Helpers.get_const_or_create('BaseQuery', ::Resolvers::Queries) do
    Class.new(::GraphQL::Schema::Resolver)
  end

  # Connection Queries
  Helpers.get_const_or_create('ConnectionQueries', ::Resolvers) do
    Module.new
  end

  Helpers.get_const_or_create('BaseQuery', ::Resolvers::ConnectionQueries) do
    Class.new(::GraphQL::Schema::Resolver)
  end

  # Enums
  Helpers.get_const_or_create('Enums') do
    Module.new
  end

  Helpers.get_const_or_create('BaseEnum', ::Enums) do
    Class.new(::GraphQL::Schema::Enum)
  end
end
included(base) click to toggle source
# File lib/graphiform.rb, line 11
def self.included(base)
  Graphiform.create_skeleton

  base.class_eval do
    include Scopiform

    include Graphiform::ActiveRecordHelpers
    include Graphiform::Core
    include Graphiform::Fields
  end
end