Class: MysqlInspector::Diff

Inherits:
Object
  • Object
show all
Defined in:
lib/mysql_inspector/diff.rb

Defined Under Namespace

Classes: TableDiff

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(current_dump, target_dump) ⇒ Diff

Returns a new instance of Diff.



4
5
6
7
# File 'lib/mysql_inspector/diff.rb', line 4

def initialize(current_dump, target_dump)
  @current_dump = current_dump
  @target_dump = target_dump
end

Instance Attribute Details

#added_tablesObject (readonly)

Returns the value of attribute added_tables.



9
10
11
# File 'lib/mysql_inspector/diff.rb', line 9

def added_tables
  @added_tables
end

#different_tablesObject (readonly)

Returns the value of attribute different_tables.



12
13
14
# File 'lib/mysql_inspector/diff.rb', line 12

def different_tables
  @different_tables
end

#equal_tablesObject (readonly)

Returns the value of attribute equal_tables.



11
12
13
# File 'lib/mysql_inspector/diff.rb', line 11

def equal_tables
  @equal_tables
end

#missing_tablesObject (readonly)

Returns the value of attribute missing_tables.



10
11
12
# File 'lib/mysql_inspector/diff.rb', line 10

def missing_tables
  @missing_tables
end

Instance Method Details

#executeObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/mysql_inspector/diff.rb', line 14

def execute
  @added_tables = []
  @missing_tables = []
  @equal_tables = []
  @different_tables = []

  target_tables = Hash[*@target_dump.tables.map { |t| [t.table_name, t] }.flatten]
  current_tables = Hash[*@current_dump.tables.map { |t| [t.table_name, t] }.flatten]

  (target_tables.keys + current_tables.keys).uniq.each { |n|
    target = target_tables[n]
    current = current_tables[n]
    if target && current
      if target == current
        @equal_tables << target
      else
        @different_tables << TableDiff.new(target, current)
      end
    else
      @added_tables << target if target_tables.has_key?(n)
      @missing_tables << current if current_tables.has_key?(n)
    end
  }
end