class Dbsketch::Comparison::PrimaryKeyComparator

Public Instance Methods

are_equivalent?(old_key, new_key) click to toggle source
# File lib/dbsketch/comparison/primary_key_comparator.rb, line 30
def are_equivalent? old_key, new_key
        ### Preconditions
        raise ArgumentError, "old_key is not a Dbsketch::Model::PrimaryKey" unless nil == old_key or old_key.is_a? Dbsketch::Model::PrimaryKey
        raise ArgumentError, "new_key is not a Dbsketch::Model::PrimaryKey" unless nil == new_key or new_key.is_a? Dbsketch::Model::PrimaryKey
        ###
        (nil == old_key and nil == new_key) or (nil != old_key and nil != new_key and old_key.name == new_key.name and columns(old_key, new_key).empty?)
end
compare(old_key, new_key) click to toggle source

Returns a PrimaryKeyDiff if tables are different, nil otherwise

# File lib/dbsketch/comparison/primary_key_comparator.rb, line 39
def compare old_key, new_key
        ### Preconditions
        raise ArgumentError, "old_key is not a Dbsketch::Model::PrimaryKey" unless nil == old_key or old_key.is_a? Dbsketch::Model::PrimaryKey
        raise ArgumentError, "new_key is not a Dbsketch::Model::PrimaryKey" unless nil == new_key or new_key.is_a? Dbsketch::Model::PrimaryKey
        ###
        PrimaryKeyDiff.new(old_key, new_key, columns(old_key, new_key)) if not are_equivalent? old_key, new_key
end

Private Instance Methods

columns(old_key, new_key) click to toggle source
# File lib/dbsketch/comparison/primary_key_comparator.rb, line 49
def columns old_key, new_key
        diffs = []
        if nil != old_key and nil != new_key
                diffs << old_key.columns.select { |old_k| not new_key.has_column? old_k.name }.map { |old_k| Diff.new old_k.name, nil }
                diffs << new_key.columns.select { |new_k| not old_key.has_column? new_k.name }.map { |new_k| Diff.new nil, new_k.name }
        end
        diffs.flatten.compact
end