Class: GraphqlScaffoldGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
GraphqlScaffoldCommonMethods
Defined in:
lib/generators/graphql_scaffold_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_in_query_typeObject



64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/generators/graphql_scaffold_generator.rb', line 64

def add_in_query_type
  inject_into_file(
    'app/graphql/types/query_type.rb', 
    "    field :#{list_many}, function: Resolvers::#{plural_name_camelized}Search\n", 
    after: "class QueryType < Types::BaseObject\n")

  inject_into_file(
    'app/graphql/types/mutation_type.rb', 
    "\n    field :#{create_one}, mutation: Mutations::Create#{singular_name_camelized}" +
    "\n    field :#{change_one}, mutation: Mutations::Change#{singular_name_camelized}" +
    "\n    field :#{destroy_one}, mutation: Mutations::Destroy#{singular_name_camelized}\n",
    after: "class MutationType < Types::BaseObject\n")
end

#check_model_existenceObject



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/generators/graphql_scaffold_generator.rb', line 18

def check_model_existence
  unless model_exists?
    if myattributes.present?
      puts 'Generating model...'
      generate('model', "#{name} #{myattributes.join(' ')}")
    else
      puts "The model #{name} wasn't found. You can add attributes and generate the model with Graphql Scaffold."
      exit
    end
  end
end

#copy_filesObject



44
45
46
47
48
49
50
51
52
# File 'lib/generators/graphql_scaffold_generator.rb', line 44

def copy_files
  copy_file 'app/graphql/resolvers/base_search_resolver.rb', 'app/graphql/resolvers/base_search_resolver.rb'
  copy_file 'app/graphql/types/enums/operator.rb', 'app/graphql/types/enums/operator.rb'
  copy_file 'app/graphql/types/enums/sort_dir.rb', 'app/graphql/types/enums/sort_dir.rb'
  copy_file 'app/graphql/types/date_time_type.rb', 'app/graphql/types/date_time_type.rb'
  copy_file 'app/graphql/types/base_field.rb', 'app/graphql/types/base_field.rb'
  copy_file 'app/graphql/mutations/base_mutation.rb', 'app/graphql/mutations/base_mutation.rb'
  copy_file 'test/integration/graphql_1st_test.rb', 'test/integration/graphql_1st_test.rb'
end

#generate_graphql_queryObject



54
55
56
57
58
59
60
61
62
# File 'lib/generators/graphql_scaffold_generator.rb', line 54

def generate_graphql_query
  template 'app/graphql/types/enums/table_field.rb', "app/graphql/types/enums/#{plural_name_snaked}_field.rb"
  template 'app/graphql/types/table_type.rb', "app/graphql/types/#{singular_name_snaked}_type.rb"
  template 'app/graphql/resolvers/table_search.rb', "app/graphql/resolvers/#{plural_name_snaked}_search.rb"
  template 'app/graphql/mutations/change_table.rb', "app/graphql/mutations/change_#{singular_name_snaked}.rb"
  template 'app/graphql/mutations/create_table.rb', "app/graphql/mutations/create_#{singular_name_snaked}.rb"
  template 'app/graphql/mutations/destroy_table.rb', "app/graphql/mutations/destroy_#{singular_name_snaked}.rb"
  template 'test/integration/graphql_table_test.rb', "test/integration/graphql_#{singular_name_snaked}_test.rb"
end

#install_gemsObject



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/generators/graphql_scaffold_generator.rb', line 30

def install_gems
  return true
  require_gems if options[:donttouchgem].blank?

  Bundler.with_clean_env do
    run 'bundle install'
  end

  if options[:donttouchgem].blank?
    generate('graphql:install')
    run 'bundle install'
  end
end