class Ditty::Generators::CrudGenerator
Attributes
controller_name[R]
folder[R]
model_name[R]
namespace[R]
policy_name[R]
views_folder[R]
Public Class Methods
source_root()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 18 def self.source_root File.dirname(__FILE__) end
Public Instance Methods
create_controller()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 38 def create_controller filename = File.join("lib/#{folder}/controllers", "#{controller_name.underscore}.rb") template '../templates/controller.rb.erb', filename # TODO: Insert the route into the component file # insert_into_file 'config.ru', "use #{class_name}\n", after: 'run ApplicationController\n' rescue StandardError => e puts "Could not generate controller for #{model_name}: #{e.message}" end
create_model()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 31 def create_model filename = File.join("lib/#{folder}/models", "#{model_name.underscore}.rb") template '../templates/model.rb.erb', filename rescue StandardError => e puts "Could not generate model for #{model_name}: #{e.message}" end
create_policy()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 47 def create_policy filename = File.join("lib/#{folder}/policies", "#{policy_name.underscore}.rb") template '../templates/policy.rb.erb', filename rescue StandardError => e puts "Could not generate policy for #{model_name}: #{e.message}" end
create_type()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 54 def create_type filename = File.join("lib/#{folder}/types", "#{model_name.underscore}_type.rb") template '../templates/type.rb.erb', filename rescue StandardError => e puts "Could not generate type for #{model_name}: #{e.message}" end
create_views()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 61 def create_views return unless options[:views] directory '../templates/views', views_folder end
setup()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 22 def setup @namespace = name.deconstantize @folder = namespace.underscore @model_name = name.demodulize @views_folder = File.join('views', model_name.pluralize.underscore) @controller_name = "#{model_name.pluralize}Controller" @policy_name = "#{model_name}Policy" end
Private Instance Methods
columns()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 73 def columns require "#{folder}/models/#{model_name.underscore}" name.constantize.columns rescue StandardError [] end
graphql_types()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 98 def graphql_types @graphql_types ||= Hash.new('String').merge( integer: 'Integer', boolean: 'Boolean', datetime: 'GraphQL::Types::ISO8601DateTime' ) end
input_types()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 106 def input_types @input_types ||= Hash.new('text').merge( integer: 'number', datetime: 'date' ) end
many_to_ones()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 87 def many_to_ones DB.foreign_key_list(model_name.underscore.pluralize) end
meta_columns()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 69 def meta_columns %i[id guid slug created_at updated_at] end
name_column(table)
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 91 def name_column(table) candidates = DB.schema(table.to_sym).to_h.keys - DB.foreign_key_list(table.to_sym).map do |e| e[:columns] end.flatten (candidates - meta_columns).first end
schema()
click to toggle source
# File lib/ditty/generators/crud_generator.rb, line 80 def schema require "#{folder}/models/#{model_name.underscore}" name.constantize.db_schema rescue StandardError [] end