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