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