Class: Dbsketch::Comparison::ColumnComparator

Inherits:
Object
  • Object
show all
Defined in:
lib/dbsketch/comparison/column_comparator.rb

Instance Method Summary collapse

Constructor Details

#initialize(options: {}) ⇒ ColumnComparator

Returns a new instance of ColumnComparator.



36
37
38
39
# File 'lib/dbsketch/comparison/column_comparator.rb', line 36

def initialize options: {}
  @options = { :compare_order => true }.merge options
  @type_comparator = TypeComparator.new
end

Instance Method Details

#are_equivalent?(old_column, new_column) ⇒ Boolean

Returns:

  • (Boolean)

Raises:

  • (ArgumentError)


41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/dbsketch/comparison/column_comparator.rb', line 41

def are_equivalent? old_column, new_column
  ### Preconditions

  raise ArgumentError, "old_column is not a Dbsketch::Model::Column" unless nil == old_column or old_column.is_a? Dbsketch::Model::Column
  raise ArgumentError, "new_column is not a Dbsketch::Model::Column" unless nil == new_column or new_column.is_a? Dbsketch::Model::Column
  ###

  (nil != old_column and nil != new_column) and
    @type_comparator.are_equivalent?(old_column.type, new_column.type) and
    old_column.identity == new_column.identity and
    old_column.default == new_column.default and
    old_column.nullable == new_column.nullable and
    (not @options[:compare_order] or old_column.order == new_column.order)
end

#compare(old_column, new_column) ⇒ Object

Raises:

  • (ArgumentError)


54
55
56
57
58
59
60
# File 'lib/dbsketch/comparison/column_comparator.rb', line 54

def compare old_column, new_column
  ### Preconditions

  raise ArgumentError, "old_column is not a Dbsketch::Model::Column" unless nil == old_column or old_column.is_a? Dbsketch::Model::Column
  raise ArgumentError, "new_column is not a Dbsketch::Model::Column" unless nil == new_column or new_column.is_a? Dbsketch::Model::Column
  ###

  ColumnDiff.new(old_column, new_column, @type_comparator, @options) if not are_equivalent? old_column, new_column
end