Class: Convergence::Diff
- Inherits:
-
Object
- Object
- Convergence::Diff
- Defined in:
- lib/convergence/diff.rb
Constant Summary collapse
- CASE_SENSITIVE_TABLE_OPTIONS =
%i(comment)
- CASE_SENSITIVE_COLUMNS =
%i(default comment values)
Instance Method Summary collapse
- #diff(from_database, to_database) ⇒ Object
- #diff_table(from_table, to_table) ⇒ Object
-
#initialize(ignore_auto_increment: false) ⇒ Diff
constructor
A new instance of Diff.
Constructor Details
#initialize(ignore_auto_increment: false) ⇒ Diff
Returns a new instance of Diff.
7 8 9 |
# File 'lib/convergence/diff.rb', line 7 def initialize(ignore_auto_increment: false) @ignore_auto_increment = ignore_auto_increment end |
Instance Method Details
#diff(from_database, to_database) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/convergence/diff.rb', line 11 def diff(from_database, to_database) delta = {} from_database = {} if from_database.nil? delta[:rename_table] = scan_rename_table(from_database, to_database) from_database = from_database.reject { |name, _| delta[:rename_table].key?(name) } to_database = to_database.reject { |name, _| delta[:rename_table].value?(name) } delta[:add_table] = scan_add_table(from_database, to_database) delta[:remove_table] = scan_remove_table(from_database, to_database) change_table = scan_change_table(from_database, to_database) delta[:change_table] = change_table[:change] delta[:remove_table].merge!(change_table[:remove]) delta[:add_table].merge!(change_table[:add]) delta end |
#diff_table(from_table, to_table) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/convergence/diff.rb', line 26 def diff_table(from_table, to_table) from = from_table.dup to = to_table.dup delta = {} delta[:rename_column] = scan_rename_column(from, to) from.columns = from.columns.reject { |name, _| delta[:rename_column].key?(name) } to.columns = to.columns.reject { |name, _| delta[:rename_column].value?(name) } delta[:remove_column] = scan_remove_column(from, to) return delta if removed_all_columns?(from_table, delta) delta[:add_column] = scan_add_column(from, to) delta[:change_column] = scan_change_column(from, to) scan_change_order_column(from, to, delta) delta[:remove_index] = scan_change_index(to, from) delta[:add_index] = scan_change_index(from, to) delta[:remove_foreign_key] = scan_change_foreign_key(to, from) delta[:add_foreign_key] = scan_change_foreign_key(from, to) delta[:change_table_option] = scan_change_table_option(from, to) delta end |