1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
|
# frozen_string_literal: true
require 'rails/generators/base'
module Graphql
module Generators
module FieldExtractor
def fields
columns = []
columns += (klass&.columns&.map { |c| generate_column_string(c) } || [])
columns + custom_fields
end
def generate_column_string(column)
name = column.name
required = column.null ? "" : "!"
type = column_type_string(column)
"#{name}:#{required}#{type}"
end
def column_type_string(column)
column.name == "id" ? "ID" : column.type.to_s.camelize
end
def klass
@klass ||= Module.const_get(name.camelize)
rescue NameError
@klass = nil
end
end
end
end
|