Module: Graphql::Generators::FieldExtractor

Included in:
InputGenerator, ObjectGenerator
Defined in:
lib/generators/graphql/field_extractor.rb

Instance Method Summary collapse

Instance Method Details

#column_type_string(column) ⇒ Object



36
37
38
# File 'lib/generators/graphql/field_extractor.rb', line 36

def column_type_string(column)
  column.name == "id" ? "ID" : column.type.to_s.camelize
end

#fieldsObject



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/generators/graphql/field_extractor.rb', line 7

def fields
  columns = []
  if (model_columns = klass&.columns)
    filter = if defined?(ActiveSupport::ParameterFilter)
      fp = if defined?(Rails) && Rails.application && (app_config = Rails.application.config.filter_parameters).present? && !app_config.empty?
        app_config
      elsif ActiveSupport.respond_to?(:filter_parameters)
        ActiveSupport.filter_parameters
      else
        []
      end
      ActiveSupport::ParameterFilter.new(fp, mask: nil)
    else
      nil
    end
    columns += model_columns
      .select { |c| filter ? filter.filter_param(c.name, c.name) : true }
      .map { |c| generate_column_string(c) }
  end
  columns + custom_fields
end

#generate_column_string(column) ⇒ Object



29
30
31
32
33
34
# File 'lib/generators/graphql/field_extractor.rb', line 29

def generate_column_string(column)
  name = column.name
  required = column.null ? "" : "!"
  type = column_type_string(column)
  "#{name}:#{required}#{type}"
end

#klassObject



40
41
42
43
44
# File 'lib/generators/graphql/field_extractor.rb', line 40

def klass
  @klass ||= Module.const_get(name.camelize)
rescue NameError
  @klass = nil
end