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)
Instance Method Summary collapse
Instance Method Details
#diff(from_database, to_database) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/convergence/diff.rb', line 7 def diff(from_database, to_database) delta = {} from_database = {} if from_database.nil? 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
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/convergence/diff.rb', line 19 def diff_table(from_table, to_table) from = from_table.dup to = to_table.dup delta = {} delta[:remove_column] = scan_remove_column(from, to) return delta if removed_all_columns?(from, 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 |