Module: Ridgepole::Ext::SchemaDumper
- Included in:
- ActiveRecord::SchemaDumper
- Defined in:
- lib/ridgepole/ext/schema_dumper.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #foreign_keys(table, stream) ⇒ Object
- #partition(table, stream) ⇒ Object
- #table(table, stream) ⇒ Object
- #tables(stream) ⇒ Object
Class Method Details
.prepended(klass) ⇒ Object
8 9 10 |
# File 'lib/ridgepole/ext/schema_dumper.rb', line 8 def self.prepended(klass) klass.extend ClassMethods end |
Instance Method Details
#foreign_keys(table, stream) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/ridgepole/ext/schema_dumper.rb', line 23 def foreign_keys(table, stream) return super unless ActiveRecord::SchemaDumper.__with_default_fk_name if (foreign_keys = @connection.foreign_keys(table)).any? add_foreign_key_statements = foreign_keys.map do |foreign_key| parts = [ "add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}", remove_prefix_and_suffix(foreign_key.to_table).inspect ] parts << "column: #{foreign_key.column.inspect}" if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table) parts << "primary_key: #{foreign_key.primary_key.inspect}" if foreign_key.custom_primary_key? parts << "name: #{foreign_key.name.inspect}" parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete " #{parts.join(', ')}" end stream.puts add_foreign_key_statements.sort.join("\n") end end |
#partition(table, stream) ⇒ Object
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/ridgepole/ext/schema_dumper.rb', line 62 def partition(table, stream) if (partition = @connection.partition(table)) partition_definitions = partition.partition_definitions.map do |partition_definition| "{ name: #{partition_definition.name.inspect}, values: #{partition_definition.values} }" end.join(' ,') stream.puts " add_partition #{partition.table.inspect}, #{partition.type.inspect}, #{partition.columns.inspect}, partition_definitions: [#{partition_definitions}]" stream.puts end end |
#table(table, stream) ⇒ Object
57 58 59 60 |
# File 'lib/ridgepole/ext/schema_dumper.rb', line 57 def table(table, stream) super partition(table, stream) end |
#tables(stream) ⇒ Object
49 50 51 52 53 54 55 |
# File 'lib/ridgepole/ext/schema_dumper.rb', line 49 def tables(stream) original = ignore_tables.dup ignore_tables.concat(@connection.partition_tables) super ensure self.ignore_tables = original end |