Class: HQ::GraphQL::RootQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/hq/graphql/root_query.rb

Constant Summary

Constants included from Scalars

Scalars::Object, Scalars::UUID

Class Method Summary collapse

Methods inherited from Object

to_graphql, with_model

Methods included from ActiveRecordExtensions

included

Class Method Details

.inherited(base) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/hq/graphql/root_query.rb', line 5

def self.inherited(base)
  super
  base.class_eval do
    lazy_load do
      ::HQ::GraphQL.root_queries.each do |graphql|
        klass = graphql.model_klass
        field_name = klass.name.demodulize.underscore
        primary_key = klass.primary_key
        pk_column = klass.columns.detect { |c| c.name == primary_key.to_s }

        field field_name, graphql.query_klass, null: true do
          argument primary_key, ::HQ::GraphQL::Types.type_from_column(pk_column), required: true
        end

        define_method(field_name) do |**attrs|
          graphql.find_record(attrs, context)
        end
      end
    end
  end
end