Sha256: 186a5d259ba447a2eedef1216b863b1831c3827996166b0bb161f644df127a55

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require 'graphql/groups/version'

require 'graphql'

require 'graphql/groups/group_type_registry'
require 'graphql/groups/schema/group_field'
require 'graphql/groups/schema/aggregate_field'
require 'graphql/groups/schema/aggregate_type'

require 'graphql/groups/has_aggregates'
require 'graphql/groups/has_groups'

require 'graphql/groups/schema/group_result_type'
require 'graphql/groups/schema/group_type'

require 'graphql/groups/lookahead_parser'
require 'graphql/groups/result_transformer'
require 'graphql/groups/executor'


module GraphQL
  module Groups
    def self.included(base)
      base.extend ClassMethods
    end

    module ClassMethods
      def group(name, type, **options)
        field name, type, extras: [:lookahead], null: false, **options

        define_method name do |lookahead: nil|
          execution_plan = GraphQL::Groups::LookaheadParser.parse(lookahead)
          base_query = type.authorized_new(object, context).scope
          results = Executor.call(base_query, execution_plan)
          GraphQL::Groups::ResultTransformer.new.run(results)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphql-groups-0.1.2 lib/graphql/groups.rb