Class: Migsupo::Differ::DiffCalculator
- Inherits:
-
Object
- Object
- Migsupo::Differ::DiffCalculator
- Defined in:
- lib/migsupo/differ/diff_calculator.rb
Instance Method Summary collapse
- #calculate(desired:, current:) ⇒ Object
-
#initialize(rename_hints: {}) ⇒ DiffCalculator
constructor
A new instance of DiffCalculator.
Constructor Details
#initialize(rename_hints: {}) ⇒ DiffCalculator
Returns a new instance of DiffCalculator.
15 16 17 |
# File 'lib/migsupo/differ/diff_calculator.rb', line 15 def initialize(rename_hints: {}) @rename_hints = rename_hints end |
Instance Method Details
#calculate(desired:, current:) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/migsupo/differ/diff_calculator.rb', line 19 def calculate(desired:, current:) operations = [] desired_names = Set.new(desired.tables.keys) current_names = Set.new(current.tables.keys) (desired_names - current_names).each do |name| operations << Operations::CreateTable.new(desired.tables[name]) end (current_names - desired_names).each do |name| operations << Operations::DropTable.new(current.tables[name]) end (desired_names & current_names).each do |name| operations.concat(diff_table(desired.tables[name], current.tables[name])) end Diff.new(operations: operations) end |