class Dbsketch::Comparison::UniqueConstraintComparator
Public Instance Methods
are_equivalent?(old_constraint, new_constraint)
click to toggle source
# File lib/dbsketch/comparison/unique_constraint_comparator.rb, line 27 def are_equivalent? old_constraint, new_constraint ### Preconditions raise ArgumentError, "old_constraint is not a Dbsketch::Model::UniqueConstraint" unless nil == old_constraint or old_constraint.is_a? Dbsketch::Model::UniqueConstraint raise ArgumentError, "new_constraint is not a Dbsketch::Model::UniqueConstraint" unless nil == new_constraint or new_constraint.is_a? Dbsketch::Model::UniqueConstraint ### (nil != old_constraint and nil != new_constraint) and columns(old_constraint, new_constraint).empty? end
compare(old_constraint, new_constraint)
click to toggle source
Returns a UniqueConstraintDiff
if tables are different, nil otherwise
# File lib/dbsketch/comparison/unique_constraint_comparator.rb, line 36 def compare old_constraint, new_constraint ### Preconditions raise ArgumentError, "old_constraint is not a Dbsketch::Model::UniqueConstraint" unless nil == old_constraint or old_constraint.is_a? Dbsketch::Model::UniqueConstraint raise ArgumentError, "new_constraint is not a Dbsketch::Model::UniqueConstraint" unless nil == new_constraint or new_constraint.is_a? Dbsketch::Model::UniqueConstraint ### UniqueConstraintDiff.new(old_constraint, new_constraint, columns(old_constraint, new_constraint)) if not are_equivalent? old_constraint, new_constraint end
Private Instance Methods
columns(old_constraint, new_constraint)
click to toggle source
# File lib/dbsketch/comparison/unique_constraint_comparator.rb, line 46 def columns old_constraint, new_constraint diffs = [] if nil != old_constraint and nil != new_constraint diffs << old_constraint.columns.select { |old_c| not new_constraint.has_column? old_c.name }.map { |old_c| Diff.new old_c.name, nil } diffs << new_constraint.columns.select { |new_c| not old_constraint.has_column? new_c.name }.map { |new_c| Diff.new nil, new_c.name } end diffs.flatten.compact end