Class: DatabaseDocumenter::Exporters::ExportToMd
Constant Summary
Constants inherited
from BaseExporter
BaseExporter::APP_NAME, BaseExporter::HEADER_SECOND_LINE
Instance Attribute Summary
Attributes inherited from BaseExporter
#commented_cols_count, #generated_cols_count, #printed_tables, #table_data
Instance Method Summary
collapse
#initialize, #load_all_models, #skip_class?
Instance Method Details
#call ⇒ Object
5
6
7
8
|
# File 'lib/database_documenter/exporters/export_to_md.rb', line 5
def call
load_all_models
generate_md_document
end
|
#generate_md_document ⇒ Object
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/database_documenter/exporters/export_to_md.rb', line 10
def generate_md_document
= StringIO.new
md_file_body = StringIO.new
md_file = File.open("database.md", "w")
()
ActiveRecord::Base.descendants.each do |klass|
next if skip_class?(klass)
generate_table_metadata(, md_file_body, klass)
generate_table_columns(md_file_body, klass)
end
md_file.puts .string
md_file.puts md_file_body.string
md_file.close
end
|
28
29
30
31
32
|
# File 'lib/database_documenter/exporters/export_to_md.rb', line 28
def ()
<< "# #{APP_NAME} Database Design\n"
<< "#{HEADER_SECOND_LINE}\n"
<< "# Tables \n"
end
|
#generate_table_columns(md_file_body, klass) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/database_documenter/exporters/export_to_md.rb', line 59
def generate_table_columns(md_file_body, klass)
columns_data = table_data.get_columns_data(klass)
md_file_body << "### Table attributes\n"
md_file_body << "|Attribute|Description|Type|Example of values|\n"
md_file_body << "|---|---|---|---|\n"
columns_data.each do |col|
description = StringIO.new
col[:description].each do |column_description|
description << "- #{column_description}\n"
end
md_file_body.puts "|#{col[:name]}|#{col[:description][0]}|#{col[:type]}|#{col[:value]}|\n"
end
md_file_body.puts "\n"
end
|
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
# File 'lib/database_documenter/exporters/export_to_md.rb', line 34
def generate_table_metadata(, md_file_body, klass)
metadata = table_data.get_meta_data(klass)
<< "- [#{klass.table_name}](##{klass.table_name})\n"
md_file_body << "\n"
md_file_body << "## #{klass.table_name}\n"
md_file_body << "### Table details\n"
md_file_body << "|Key|Value|\n"
md_file_body << "|---|---|\n"
md_file_body << "|Table Name|#{metadata[:name]}|\n"
md_file_body << "|Description|#{metadata[:description]}|\n"
md_file_body << "|Primary Key|#{metadata[:primary_key]}|\n"
md_file_body << "\n"
sql_code = metadata[:sql_code].contents.map(&:runs).map(&:first).map(&:text_content).join("\n")
md_file_body << "### Table SQL Code\n"
md_file_body << "```SQL\n"
md_file_body << "#{sql_code}\n"
md_file_body << "```\n"
end
|