Class: DatabaseDocumenter::DatabaseComment::PostgresDatabaseComment

Inherits:
BaseDatabaseComment show all
Defined in:
lib/database_documenter/database_comment/postgres_database_comment.rb

Class Method Summary collapse

Methods inherited from BaseDatabaseComment

database_name

Class Method Details

.read_columns_comment(table_name) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/database_documenter/database_comment/postgres_database_comment.rb', line 3

def self.read_columns_comment(table_name)
  select_comment = <<-SQL
    SELECT
      cols.column_name,
      (
        SELECT
            pg_catalog.col_description(c.oid, cols.ordinal_position::int)
        FROM
            pg_catalog.pg_class c
        WHERE
            c.oid = (SELECT ('"' || cols.table_name || '"')::regclass::oid)
            AND c.relname = cols.table_name
      ) AS column_comment
    FROM
        information_schema.columns cols
    WHERE
        cols.table_catalog    = '#{database_name}'
        AND cols.table_name   = '#{table_name}'
        AND cols.table_schema = 'public';
  SQL

  columns_comment_hash = {}
  ActiveRecord::Base.connection.execute(select_comment).map { |c| columns_comment_hash[c['column_name']] = c['column_comment'] }
  columns_comment_hash
end

.read_table_comment(table_name) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/database_documenter/database_comment/postgres_database_comment.rb', line 29

def self.read_table_comment(table_name)
  select_comment = <<-SQL
    select obj_description('public.#{table_name}'::regclass);
  SQL

  ActiveRecord::Base.connection.execute(select_comment)[0]['obj_description']
end