Class: Convergence::Dumper::PostgresSchemaDumper
- Inherits:
-
Object
- Object
- Convergence::Dumper::PostgresSchemaDumper
- Defined in:
- lib/convergence/dumper/postgres_schema_dumper.rb
Constant Summary collapse
- TYPE_MAPPING =
Convergence's DSL type names follow MySQL terminology. Map PostgreSQL's internal type name (udt_name) back to the closest DSL type.
{ 'int2' => :smallint, 'int4' => :int, 'int8' => :bigint, 'varchar' => :varchar, 'bpchar' => :char, 'text' => :text, 'bytea' => :blob, 'timestamp' => :datetime, 'timestamptz' => :datetime, 'date' => :date, 'time' => :time, 'numeric' => :decimal, 'float4' => :float, 'float8' => :double, 'json' => :json, 'jsonb' => :json, # Convergence has no native boolean DSL type; store it as tinyint(1), the same # representation Convergence::Table#boolean produces for the MySQL adapter. 'bool' => :tinyint }.freeze
- DEFAULT_VALUE_PATTERN =
/\A'(?<value>(?:[^']|'')*)'(?:::[\w. ]+)?\z/.freeze
Instance Method Summary collapse
- #dump ⇒ Object
-
#initialize(connector) ⇒ PostgresSchemaDumper
constructor
A new instance of PostgresSchemaDumper.
Constructor Details
#initialize(connector) ⇒ PostgresSchemaDumper
Returns a new instance of PostgresSchemaDumper.
30 31 32 33 34 |
# File 'lib/convergence/dumper/postgres_schema_dumper.rb', line 30 def initialize(connector) @connector = connector @target_database = connector.config.database @tables = {} end |
Instance Method Details
#dump ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/convergence/dumper/postgres_schema_dumper.rb', line 36 def dump table_definitions = select_table_definitions column_definitions = select_column_definitions.group_by { |r| r['table_name'] } index_definitions = select_index_definitions.group_by { |r| r['table_name'] } foreign_key_definitions = select_foreign_key_definitions.group_by { |r| r['table_name'] } table_definitions.map { |r| r['table_name'] }.each do |table_name| table = Convergence::Table.new(table_name) (table, table_definitions.find { |r| r['table_name'] == table_name }) parse_columns(table, column_definitions[table_name]) parse_indexes(table, index_definitions[table_name]) parse_foreign_keys(table, foreign_key_definitions[table_name]) @tables[table_name] = table end @tables end |