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



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/generators/graphql_scaffold_generator.rb', line 93

def add_in_query_type
  if queries
    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")
  end

  if mutations
    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
end

#check_model_existenceObject



37
38
39
40
41
42
43
44
45
46
47
# File 'lib/generators/graphql_scaffold_generator.rb', line 37

def check_model_existence
  unless model_exists?
    if myattributes.present?
      puts 'Generating model...'
      generate('model', "#{namespace.nil? ? '' : namespace+'::'}#{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

#check_what_to_doObject



20
21
22
23
24
25
# File 'lib/generators/graphql_scaffold_generator.rb', line 20

def check_what_to_do
  if !queries && !mutations && !subscriptions
    puts "\n  ** What do you want me to do? Nothing??? No queries, no mutations, no subscriptions...\n\n"
    exit
  end
end

#copy_filesObject



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/generators/graphql_scaffold_generator.rb', line 49

def copy_files
  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'

  if queries
    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'
  end

  if mutations
    copy_file 'app/graphql/mutations/base_mutation.rb', 'app/graphql/mutations/base_mutation.rb'
  end

  if subscriptions
  end

  if tests && (queries || mutations || subscriptions)
    copy_file 'test/integration/graphql_1st_test.rb', 'test/integration/graphql_1st_test.rb'
  end
end

#generate_graphql_queryObject



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/generators/graphql_scaffold_generator.rb', line 71

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"
  
  if queries
    template 'app/graphql/resolvers/table_search.rb', "app/graphql/resolvers/#{plural_name_snaked}_search.rb"
  end

  if mutations
    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"
  end

  if subscriptions
  end

  if tests && (queries || mutations || subscriptions)
    template 'test/integration/graphql_table_test.rb', "test/integration/graphql_#{singular_name_snaked}_test.rb"
  end
end

#install_gemsObject



27
28
29
30
31
32
33
34
35
# File 'lib/generators/graphql_scaffold_generator.rb', line 27

def install_gems
  if check_gem_versions.present?
    puts '='*80
    puts '      ATENTION!!! ATENTION!!! ATENTION!!!'
    puts '='*80
    puts check_gem_versions.join("\n")
    puts '='*80
  end    
end