Class: Superstudio::Generators::SchemaGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Includes:
SchemaReader
Defined in:
lib/generators/superstudio/schema_generator.rb

Instance Method Summary collapse

Methods included from SchemaReader

#parse_json_schema, #read_schema, #replace_reference_keys, #schema_maps_directory, #schemas_directory

Instance Method Details

#create_schema_fileObject



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/generators/superstudio/schema_generator.rb', line 15

def create_schema_file
  model_klass = name.classify.constantize
  model_columns = {}

  model_klass.columns.each do |column|
    column_type = column.type
    column_type = :string if [:datetime].include? column.type
    column_type = :number if [:decimal, :float].include? column.type
    model_columns[column.name] = column_type
  end

  file_data = template_header
  model_columns.each do |name, type|
    file_data << data_column(name, type)
  end

  file_data = file_data.chomp(",")
  file_data << template_footer

  if file_arg.nil?
    model_klass_name = model_klass.name.gsub(":", "").underscore
  else
    model_klass_name = file_arg
  end

  create_file "#{schemas_directory}/#{model_klass_name}.json.schema", file_data
end