Sha256: 898dc6cde8caa0db5b773054977d2668d13c43b871ff061cc000ea766c50988a

Contents?: true

Size: 1.95 KB

Versions: 21

Compression:

Stored size: 1.95 KB

Contents

module GraphitiGql
  class Schema
    class PreciseDatetime < GraphQL::Types::ISO8601DateTime
      self.time_precision = 6
    end

    GQL_TYPE_MAP = {
      integer_id: String,
      string: String,
      uuid: String,
      integer: Integer,
      big_integer: GraphQL::Types::BigInt,
      float: Float,
      boolean: GraphQL::Schema::Member::GraphQLTypeNames::Boolean,
      date: GraphQL::Types::ISO8601Date,
      datetime: GraphQL::Types::ISO8601DateTime,
      precise_datetime: PreciseDatetime,
      hash: GraphQL::Types::JSON,
      array: [GraphQL::Types::JSON],
      array_of_strings: [String],
      array_of_integers: [Integer],
      array_of_floats: [Float],
      array_of_dates: [GraphQL::Types::ISO8601Date],
      array_of_datetimes: [GraphQL::Types::ISO8601DateTime],
      array_of_precise_datetimes: [PreciseDatetime]
    }

    class RelayConnectionExtension < GraphQL::Schema::Field::ConnectionExtension
      def resolve(object:, arguments:, context:)
        next_args = arguments.dup
        yield(object, next_args, arguments)
      end
    end

    def self.base_object
      klass = Class.new(GraphQL::Schema::Object)
      # TODO make this config maybe
      if defined?(ActionView)
        klass.send(:include, ActionView::Helpers::TranslationHelper)
        klass.class_eval do
          def initialize(*)
            super
            @virtual_path = "."
          end
        end
      end
      klass
    end

    def self.registry
      Registry.instance
    end

    def self.print
      GraphQL::Schema::Printer.print_schema(GraphitiGql.schema)
    end

    def initialize(resources)
      @resources = resources
    end

    def generate
      klass = Class.new(::GraphQL::Schema)
      klass.query(Query.new(@resources).build)
      klass.use(GraphQL::Batch)
      klass.connections.add(ResponseShim, Connection)
      klass.connections.add(Array, ToManyConnection)
      klass.orphan_types [GraphQL::Types::JSON]
      klass
    end
  end
end





Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
graphiti_gql-0.2.23 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.22 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.21 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.20 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.19 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.18 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.17 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.16 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.15 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.14 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.12 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.11 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.10 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.9 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.8 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.7 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.6 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.5 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.4 lib/graphiti_gql/schema.rb
graphiti_gql-0.2.3 lib/graphiti_gql/schema.rb