Module: DatabaseDocumenter::TablesSql

Defined in:
lib/database_documenter/tables_sql.rb

Class Method Summary collapse

Class Method Details

.generateObject



4
5
6
7
8
9
10
# File 'lib/database_documenter/tables_sql.rb', line 4

def self.generate
  configuration = DatabaseDocumenter.configuration.database_configuration

  tables_sql = generate_sql_file(configuration)

  send("process_#{configuration['adapter']}_sql", tables_sql)
end

.generate_sql_file(configuration) ⇒ Object



12
13
14
15
16
17
# File 'lib/database_documenter/tables_sql.rb', line 12

def self.generate_sql_file(configuration)
  ActiveRecord::Tasks::DatabaseTasks.structure_dump(configuration, 'database.sql')
  tables_sql = IO.read('database.sql')
  File.delete('database.sql')
  tables_sql
end

.process_mysql2_sql(tables_sql) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/database_documenter/tables_sql.rb', line 36

def self.process_mysql2_sql(tables_sql)
  tables_sql_hash = {}
  tables_sql = tables_sql.split(';').select { |line| line.match(/CREATE/) }

  tables_sql.each do |sql_statement|
    key = sql_statement.scan(/`(.*)`/)[0][0]
    broken_cell_para = Caracal::Core::Models::TableCellModel.new do |c|
      sql_statement[1..-1].squeeze(' ').split("\n").each do |p|
        c.p p
      end
    end
    tables_sql_hash[key] = broken_cell_para
  end

  tables_sql_hash
end

.process_postgresql_sql(tables_sql) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/database_documenter/tables_sql.rb', line 19

def self.process_postgresql_sql(tables_sql)
  tables_sql_hash = {}
  tables_sql = tables_sql.split('--').select { |line| line.match(/CREATE TABLE/) }

  tables_sql.each do |sql_statement|
    key = sql_statement.scan(/public.(.*) \(/)[0][0]
    broken_cell_para = Caracal::Core::Models::TableCellModel.new do |c|
      sql_statement.strip.squeeze(' ').split("\n").each do |p|
        c.p p
      end
    end
    tables_sql_hash[key] = broken_cell_para
  end

  tables_sql_hash
end