Class: Convergence::Diff

Inherits:
Object
  • Object
show all
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