class MetadataExtractor
Public Class Methods
new(db_connection)
click to toggle source
# File lib/metadata_extractor.rb, line 3 def initialize(db_connection) @db_connection = db_connection end
Public Instance Methods
metadata()
click to toggle source
# File lib/metadata_extractor.rb, line 7 def metadata {:schema => schemas, :db_name => db_name} end
Private Instance Methods
oid(schema_name, table_name)
click to toggle source
# File lib/metadata_extractor.rb, line 39 def oid(schema_name, table_name) @db_connection.query(" select pg_class.oid as table_oid from pg_class join pg_namespace on pg_namespace.oid = pg_class.relnamespace where (relkind = 'r') and pg_namespace.nspname = '#{schema_name}' and pg_class.relname = '#{table_name}' ").to_a.map{|row| row['table_oid'] }.first end
schema_names()
click to toggle source
# File lib/metadata_extractor.rb, line 22 def schema_names @db_connection.query("show search_path;").to_a.first['search_path'].split(/,/).delete_if{|value| value.match(/\$/) } end
schemas()
click to toggle source
# File lib/metadata_extractor.rb, line 13 def schemas toReturn = {} schema_names.each do |schema_name| toReturn[schema_name] = tables(schema_name) end toReturn end
table(schema_name, table_name)
click to toggle source
# File lib/metadata_extractor.rb, line 35 def table(schema_name, table_name) {:oid => oid(schema_name, table_name), :columns => columns(schema_name, table_name)} end
table_names(schema_name)
click to toggle source
# File lib/metadata_extractor.rb, line 48 def table_names(schema_name) @db_connection.query(" select pg_class.relname as table_name from pg_class join pg_namespace on pg_namespace.oid = pg_class.relnamespace where (relkind = 'r') and pg_namespace.nspname = '#{schema_name}' ").to_a.map{|row| row['table_name'] } end
tables(schema_name)
click to toggle source
# File lib/metadata_extractor.rb, line 26 def tables(schema_name) to_return = {} table_names(schema_name).each do |table_name| to_return[table_name] = table(schema_name,table_name) end to_return end