Module: Resolvers::Analytics::Aggregation::EngineResolver

Defined in:
app/graphql/resolvers/analytics/aggregation/engine_resolver.rb,
app/graphql/resolvers/analytics/aggregation/engine_resolver/base_engine_resolver.rb

Defined Under Namespace

Classes: BaseEngineResolver

Class Method Summary collapse

Class Method Details

.build(engine, **graphql_context, &block) ⇒ Object

Factory method that dynamically creates a GraphQL resolver class for a specific aggregation engine This method constructs a resolver subclass that wraps a given aggregation engine (e.g., ClickHouse or ActiveRecord)

Parameters:



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/graphql/resolvers/analytics/aggregation/engine_resolver.rb', line 12

def build(engine, **graphql_context, &block)
  klass = Class.new(BaseEngineResolver)
  klass.engine = engine
  adapter = ::Gitlab::Database::Aggregation::Graphql::Adapter
  klass.class_eval do
    type Types::Analytics::Aggregation::EngineResponseType.build(engine, **graphql_context).connection_type,
      null: true

    adapter.each_filter_argument(engine.filters) do |name, type, kwargs|
      argument(name, type, **kwargs) # rubocop:disable Graphql/Descriptions -- defined in adapter
    end
  end
  klass.class_eval(&block)

  klass
end