Class: DatabaseDocumenter::TableData

Inherits:
Object
  • Object
show all
Defined in:
lib/database_documenter/table_data.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTableData

Returns a new instance of TableData.



6
7
8
9
# File 'lib/database_documenter/table_data.rb', line 6

def initialize
  self.database_comment_class = DatabaseDocumenter::DatabaseComment.get_comment_class
  load_tables_sql_data
end

Instance Attribute Details

#database_comment_classObject

Returns the value of attribute database_comment_class.



4
5
6
# File 'lib/database_documenter/table_data.rb', line 4

def database_comment_class
  @database_comment_class
end

#tables_sqlObject

Returns the value of attribute tables_sql.



4
5
6
# File 'lib/database_documenter/table_data.rb', line 4

def tables_sql
  @tables_sql
end

Instance Method Details

#clean_html_column_data(column_data) ⇒ Object



68
69
70
# File 'lib/database_documenter/table_data.rb', line 68

def clean_html_column_data(column_data)
  column_data.is_a?(String) ? column_data.gsub(/(?:\n\r?|\r\n?)/, '<br>').strip : column_data
end

#get_column_data(klass, col, sample_record, column_comment) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/database_documenter/table_data.rb', line 38

def get_column_data(klass, col, sample_record, column_comment)
  column_data = { name: col.name }
  column_data[:description] = []

  if column_comment.present?
    column_data[:description_generated] = false
    column_comment.split("<br/>").each do |s|
      column_data[:description] << s
    end
  else
    column_data[:description_generated] = true
    column_data[:description] << DatabaseDocumenter::ColumnDescription.generate(col.name, col.type, klass)
  end

  column_data[:type] = col.type

  hidden_values_columns = DatabaseDocumenter.configuration.hidden_values_columns

  column_data[:value] = if hidden_values_columns.include?(col.name)
                          'Data is hidden/removed'
                        elsif sample_record.nil?
                          ''
                        elsif Rails.version.split(".")[0].to_i == 4
                          clean_html_column_data(sample_record[col.name])
                        else
                          clean_html_column_data(sample_record.send("#{col.name}_before_type_cast"))
                        end
  column_data
end

#get_columns_data(klass) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
# File 'lib/database_documenter/table_data.rb', line 26

def get_columns_data(klass)
  sample_record = klass.first
  columns_comments = database_comment_class.read_columns_comment(klass.table_name)
  columns = []
  klass.columns.each do |col|
    column_data = get_column_data(klass, col, sample_record, columns_comments[col.name])

    columns << column_data
  end
  columns
end

#get_meta_data(klass) ⇒ Object



15
16
17
18
19
20
21
22
23
24
# File 'lib/database_documenter/table_data.rb', line 15

def (klass)
  table_comment = database_comment_class.read_table_comment(klass.table_name)

  data = {}
  data[:name] = klass.table_name
  data[:description] = table_comment.presence || "A collection of data related to #{klass.table_name.titleize}"
  data[:primary_key] = klass.primary_key
  data[:sql_code] = tables_sql[klass.table_name]
  data
end

#load_tables_sql_dataObject



11
12
13
# File 'lib/database_documenter/table_data.rb', line 11

def load_tables_sql_data
  self.tables_sql = DatabaseDocumenter::TablesSql.generate
end