Class: SQLGenerator::PostgresGenerator
- Inherits:
-
SQLGenerator
- Object
- SQLGenerator
- SQLGenerator::PostgresGenerator
- Defined in:
- lib/convergence/sql_generator/postgres_generator.rb
Constant Summary collapse
- TYPE_MAPPING =
Convergence's DSL type names follow MySQL terminology (kept for cross-adapter DSL compatibility). Map them to their closest native PostgreSQL type.
{ tinyint: 'smallint', smallint: 'smallint', mediumint: 'integer', int: 'integer', bigint: 'bigint', float: 'real', double: 'double precision', decimal: 'decimal', char: 'char', varchar: 'varchar', tinyblob: 'bytea', blob: 'bytea', mediumblob: 'bytea', longblob: 'bytea', tinytext: 'text', text: 'text', mediumtext: 'text', longtext: 'text', date: 'date', time: 'time', datetime: 'timestamp', timestamp: 'timestamp', year: 'integer', json: 'jsonb' }.freeze
- TYPES_WITH_LIMIT =
[:char, :varchar].freeze
- UNSUPPORTED_TYPES =
[:enum, :set].freeze
Instance Attribute Summary collapse
-
#original_table ⇒ Object
readonly
Returns the value of attribute original_table.
Instance Method Summary collapse
Instance Attribute Details
#original_table ⇒ Object (readonly)
Returns the value of attribute original_table.
35 36 37 |
# File 'lib/convergence/sql_generator/postgres_generator.rb', line 35 def original_table @original_table end |
Instance Method Details
#generate(to_table, delta, original_table, safe_migration: false) ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/convergence/sql_generator/postgres_generator.rb', line 37 def generate(to_table, delta, original_table, safe_migration: false) @original_table = original_table sqls = [] sqls << rename_table_sqls(delta) sqls << change_table_sql(to_table, delta) sqls << (safe_migration ? [] : drop_table_sqls(delta)) sqls << create_table_sqls(delta) sqls.reject!(&:empty?) sqls.join("\n") end |