dbsketch 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +674 -0
  3. data/README.md +1 -0
  4. data/lib/dbsketch.rb +64 -0
  5. data/lib/dbsketch/automation/automation_error.rb +15 -0
  6. data/lib/dbsketch/automation/database_connection_details.rb +32 -0
  7. data/lib/dbsketch/automation/database_importer.rb +184 -0
  8. data/lib/dbsketch/automation/database_proxy.rb +78 -0
  9. data/lib/dbsketch/automation/table_importer.rb +114 -0
  10. data/lib/dbsketch/comparison/check_constraint_comparator.rb +54 -0
  11. data/lib/dbsketch/comparison/column_comparator.rb +65 -0
  12. data/lib/dbsketch/comparison/comparison_error.rb +15 -0
  13. data/lib/dbsketch/comparison/computed_column_comparator.rb +63 -0
  14. data/lib/dbsketch/comparison/database_comparator.rb +115 -0
  15. data/lib/dbsketch/comparison/diff.rb +37 -0
  16. data/lib/dbsketch/comparison/foreign_key_comparator.rb +56 -0
  17. data/lib/dbsketch/comparison/function_comparator.rb +56 -0
  18. data/lib/dbsketch/comparison/index_comparator.rb +65 -0
  19. data/lib/dbsketch/comparison/primary_key_comparator.rb +61 -0
  20. data/lib/dbsketch/comparison/procedure_comparator.rb +54 -0
  21. data/lib/dbsketch/comparison/table_comparator.rb +158 -0
  22. data/lib/dbsketch/comparison/trigger_comparator.rb +53 -0
  23. data/lib/dbsketch/comparison/type_comparator.rb +51 -0
  24. data/lib/dbsketch/comparison/unique_constraint_comparator.rb +58 -0
  25. data/lib/dbsketch/comparison/view_comparator.rb +54 -0
  26. data/lib/dbsketch/model/abstract_column.rb +25 -0
  27. data/lib/dbsketch/model/check_constraint.rb +23 -0
  28. data/lib/dbsketch/model/column.rb +35 -0
  29. data/lib/dbsketch/model/computed_column.rb +27 -0
  30. data/lib/dbsketch/model/custom_code.rb +21 -0
  31. data/lib/dbsketch/model/database.rb +87 -0
  32. data/lib/dbsketch/model/database_object.rb +71 -0
  33. data/lib/dbsketch/model/foreign_key.rb +29 -0
  34. data/lib/dbsketch/model/function.rb +23 -0
  35. data/lib/dbsketch/model/index.rb +40 -0
  36. data/lib/dbsketch/model/model_error.rb +15 -0
  37. data/lib/dbsketch/model/operation.rb +28 -0
  38. data/lib/dbsketch/model/primary_key.rb +33 -0
  39. data/lib/dbsketch/model/procedure.rb +18 -0
  40. data/lib/dbsketch/model/table.rb +171 -0
  41. data/lib/dbsketch/model/trigger.rb +32 -0
  42. data/lib/dbsketch/model/type.rb +92 -0
  43. data/lib/dbsketch/model/unique_constraint.rb +33 -0
  44. data/lib/dbsketch/model/view.rb +23 -0
  45. data/lib/dbsketch/rendering/meta/column_renderer.rb +76 -0
  46. data/lib/dbsketch/rendering/meta/database_renderer.rb +112 -0
  47. data/lib/dbsketch/rendering/meta/foreign_key_renderer.rb +31 -0
  48. data/lib/dbsketch/rendering/meta/index_renderer.rb +30 -0
  49. data/lib/dbsketch/rendering/meta/operation_renderer.rb +66 -0
  50. data/lib/dbsketch/rendering/meta/table_renderer.rb +177 -0
  51. data/lib/dbsketch/rendering/meta/trigger_renderer.rb +31 -0
  52. data/lib/dbsketch/rendering/meta/type_renderer.rb +37 -0
  53. data/lib/dbsketch/rendering/meta/view_renderer.rb +32 -0
  54. data/lib/dbsketch/rendering/sql/column_renderer.rb +75 -0
  55. data/lib/dbsketch/rendering/sql/database_diff_renderer.rb +94 -0
  56. data/lib/dbsketch/rendering/sql/database_renderer.rb +139 -0
  57. data/lib/dbsketch/rendering/sql/foreign_key_renderer.rb +24 -0
  58. data/lib/dbsketch/rendering/sql/index_renderer.rb +31 -0
  59. data/lib/dbsketch/rendering/sql/operation_renderer.rb +64 -0
  60. data/lib/dbsketch/rendering/sql/table_renderer.rb +148 -0
  61. data/lib/dbsketch/rendering/sql/trigger_renderer.rb +31 -0
  62. data/lib/dbsketch/rendering/sql/type_renderer.rb +28 -0
  63. data/lib/dbsketch/rendering/sql/view_renderer.rb +31 -0
  64. data/lib/dbsketch/version.rb +3 -0
  65. metadata +134 -0
@@ -0,0 +1,65 @@
1
+ ########################################################################################################################
2
+ # Compute differences between two indexes
3
+ ########################################################################################################################
4
+
5
+ require_relative '../model/index'
6
+ require_relative 'diff'
7
+
8
+ module Dbsketch
9
+ module Comparison
10
+
11
+ class IndexDiff < Diff
12
+ def initialize old_index, new_index, columns
13
+ super old_index, new_index
14
+ if change?
15
+ @target = Diff.new(old_index.target, new_index.target) if old_index.target.name != new_index.target.name
16
+ @columns = columns
17
+ end
18
+ end
19
+
20
+ attr_reader :target, :columns
21
+ alias :old_index :old_value
22
+ alias :new_index :new_value
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+ module Dbsketch
29
+ module Comparison
30
+
31
+ class IndexComparator
32
+
33
+ def are_equivalent? old_index, new_index
34
+ ### Preconditions
35
+ raise ArgumentError, "old_index is not a Dbsketch::Model::Index" unless nil == old_index or old_index.is_a? Dbsketch::Model::Index
36
+ raise ArgumentError, "new_index is not a Dbsketch::Model::Index" unless nil == new_index or new_index.is_a? Dbsketch::Model::Index
37
+ ###
38
+ (nil != old_index and nil != new_index) and
39
+ old_index.target.name == new_index.target.name and
40
+ columns(old_index, new_index).empty?
41
+ end
42
+
43
+ def compare old_index, new_index
44
+ ### Preconditions
45
+ raise ArgumentError, "old_index is not a Dbsketch::Model::Index" unless nil == old_index or old_index.is_a? Dbsketch::Model::Index
46
+ raise ArgumentError, "new_index is not a Dbsketch::Model::Index" unless nil == new_index or new_index.is_a? Dbsketch::Model::Index
47
+ ###
48
+ IndexDiff.new(old_index, new_index, columns(old_index, new_index)) if not are_equivalent? old_index, new_index
49
+ end
50
+
51
+ private
52
+
53
+ def columns old_index, new_index
54
+ diffs = []
55
+ if nil != old_index and nil != new_index
56
+ diffs << old_index.columns.select { |old_i| not new_index.has_column? old_i.name }.map { |old_i| Diff.new old_i.name, nil }
57
+ diffs << new_index.columns.select { |new_i| not old_index.has_column? new_i.name }.map { |new_i| Diff.new nil, new_i.name }
58
+ end
59
+ diffs.flatten.compact
60
+ end
61
+
62
+ end
63
+
64
+ end
65
+ end
@@ -0,0 +1,61 @@
1
+ ########################################################################################################################
2
+ # Database differences between two primary keys
3
+ ########################################################################################################################
4
+
5
+ require_relative '../model/primary_key'
6
+ require_relative 'diff'
7
+
8
+ module Dbsketch
9
+ module Comparison
10
+
11
+ class PrimaryKeyDiff < Diff
12
+ def initialize old_key, new_key, columns
13
+ super old_key, new_key
14
+ ### Preconditions
15
+ columns.each_with_index { |column, index| raise ArgumentError, "columns[#{index}] is not a Dbsketch::Comparison::Diff" unless column.is_a? Dbsketch::Comparison::Diff }
16
+ ###
17
+ if change?
18
+ @name = Diff.new(old_key.name, new_key.name) if old_key.name != new_key.name
19
+ end
20
+ @columns = columns
21
+ end
22
+
23
+ attr_reader :name, :columns
24
+ alias :old_key :old_value
25
+ alias :new_key :new_value
26
+ end
27
+
28
+ class PrimaryKeyComparator
29
+
30
+ def are_equivalent? old_key, new_key
31
+ ### Preconditions
32
+ raise ArgumentError, "old_key is not a Dbsketch::Model::PrimaryKey" unless nil == old_key or old_key.is_a? Dbsketch::Model::PrimaryKey
33
+ raise ArgumentError, "new_key is not a Dbsketch::Model::PrimaryKey" unless nil == new_key or new_key.is_a? Dbsketch::Model::PrimaryKey
34
+ ###
35
+ (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?)
36
+ end
37
+
38
+ # Returns a PrimaryKeyDiff if tables are different, nil otherwise
39
+ def compare old_key, new_key
40
+ ### Preconditions
41
+ raise ArgumentError, "old_key is not a Dbsketch::Model::PrimaryKey" unless nil == old_key or old_key.is_a? Dbsketch::Model::PrimaryKey
42
+ raise ArgumentError, "new_key is not a Dbsketch::Model::PrimaryKey" unless nil == new_key or new_key.is_a? Dbsketch::Model::PrimaryKey
43
+ ###
44
+ PrimaryKeyDiff.new(old_key, new_key, columns(old_key, new_key)) if not are_equivalent? old_key, new_key
45
+ end
46
+
47
+ private
48
+
49
+ def columns old_key, new_key
50
+ diffs = []
51
+ if nil != old_key and nil != new_key
52
+ diffs << old_key.columns.select { |old_k| not new_key.has_column? old_k.name }.map { |old_k| Diff.new old_k.name, nil }
53
+ diffs << new_key.columns.select { |new_k| not old_key.has_column? new_k.name }.map { |new_k| Diff.new nil, new_k.name }
54
+ end
55
+ diffs.flatten.compact
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,54 @@
1
+ ########################################################################################################################
2
+ # Compute differences between two procedures
3
+ ########################################################################################################################
4
+
5
+ require_relative '../model/procedure'
6
+ require_relative 'diff'
7
+
8
+ module Dbsketch
9
+ module Comparison
10
+
11
+ class ProcedureDiff < Diff
12
+ def initialize old_procedure, new_procedure
13
+ super old_procedure, new_procedure
14
+ if change?
15
+ @arguments = Diff.new(old_procedure.arguments, new_procedure.arguments) if old_procedure.arguments != new_procedure.arguments
16
+ @algo = Diff.new(old_procedure.algo, new_procedure.algo) if old_procedure.algo != new_procedure.algo
17
+ end
18
+ end
19
+
20
+ attr_reader :arguments, :algo
21
+ alias :old_procedure :old_value
22
+ alias :new_procedure :new_value
23
+ end
24
+
25
+ end
26
+ end
27
+
28
+ module Dbsketch
29
+ module Comparison
30
+
31
+ class ProcedureComparator
32
+
33
+ def are_equivalent? old_procedure, new_procedure
34
+ ### Preconditions
35
+ raise ArgumentError, "old_procedure is not a Dbsketch::Model::Procedure" unless nil == old_procedure or old_procedure.is_a? Dbsketch::Model::Procedure
36
+ raise ArgumentError, "new_procedure is not a Dbsketch::Model::Procedure" unless nil == new_procedure or new_procedure.is_a? Dbsketch::Model::Procedure
37
+ ###
38
+ (nil != old_procedure and nil != new_procedure) and
39
+ old_procedure.arguments == new_procedure.arguments and
40
+ old_procedure.algo == new_procedure.algo
41
+ end
42
+
43
+ def compare old_procedure, new_procedure
44
+ ### Preconditions
45
+ raise ArgumentError, "old_procedure is not a Dbsketch::Model::Procedure" unless nil == old_procedure or old_procedure.is_a? Dbsketch::Model::Procedure
46
+ raise ArgumentError, "new_procedure is not a Dbsketch::Model::Procedure" unless nil == new_procedure or new_procedure.is_a? Dbsketch::Model::Procedure
47
+ ###
48
+ ProcedureDiff.new(old_procedure, new_procedure) if not are_equivalent? old_procedure, new_procedure
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,158 @@
1
+ ########################################################################################################################
2
+ # Database differences between two existing columns
3
+ ########################################################################################################################
4
+
5
+ require_relative '../model/table'
6
+ require_relative 'diff'
7
+ require_relative 'check_constraint_comparator'
8
+ require_relative 'column_comparator'
9
+ require_relative 'computed_column_comparator'
10
+ require_relative 'foreign_key_comparator'
11
+ require_relative 'primary_key_comparator'
12
+ require_relative 'unique_constraint_comparator'
13
+
14
+ module Dbsketch
15
+ module Comparison
16
+
17
+ class TableDiff < Diff
18
+ def initialize(old_table, new_table, columns, primary_key, check_constraints, foreign_keys, unique_constraints)
19
+ super old_table, new_table
20
+ ### Preconditions
21
+ raise ArgumentError, "old_table is not a Dbsketch::Model::Table" unless nil == old_table or old_table.is_a? Dbsketch::Model::Table
22
+ raise ArgumentError, "new_table is not a Dbsketch::Model::Table" unless nil == new_table or new_table.is_a? Dbsketch::Model::Table
23
+ check_constraints.each_with_index { |diff, index| raise ArgumentError, "check_constraints[#{index}] is not a Dbsketch::Comparison::CheckConstraintDiff" unless diff.is_a? Dbsketch::Comparison::CheckConstraintDiff }
24
+ ###
25
+ @columns = columns
26
+ @primary_key = primary_key
27
+ @check_constraints = check_constraints
28
+ @foreign_keys = foreign_keys
29
+ @unique_constraints = unique_constraints
30
+ end
31
+
32
+ attr_reader :columns, :primary_key, :check_constraints, :foreign_keys, :unique_constraints
33
+ alias :old_table :old_value
34
+ alias :new_table :new_value
35
+ end
36
+
37
+ class TableComparator
38
+ def initialize column_comparator: nil, options: {}
39
+ ### Preconditions
40
+ raise ArgumentError, "column_comparator is not a Dbsketch::Comparison::ColumnComparator" unless nil == column_comparator or column_comparator.is_a? Dbsketch::Comparison::ColumnComparator
41
+ ###
42
+ @check_constraint_comparator = CheckConstraintComparator.new
43
+ @column_comparator = (nil == column_comparator ? ColumnComparator.new(:options => options) : column_comparator)
44
+ @computed_column_comparator = ComputedColumnComparator.new
45
+ @foreign_key_comparator = ForeignKeyComparator.new
46
+ @primary_key_comparator = PrimaryKeyComparator.new
47
+ @unique_constraint_comparator = UniqueConstraintComparator.new
48
+ end
49
+
50
+ def are_equivalent? old_table, new_table
51
+ ### Preconditions
52
+ raise ArgumentError, "old_table is not a Dbsketch::Model::Table" unless nil == old_table or old_table.is_a? Dbsketch::Model::Table
53
+ raise ArgumentError, "new_table is not a Dbsketch::Model::Table" unless nil == new_table or new_table.is_a? Dbsketch::Model::Table
54
+ ###
55
+ (nil != old_table and nil != new_table) and
56
+ columns(old_table, new_table).empty? and
57
+ @primary_key_comparator.are_equivalent?(old_table.primary_key, new_table.primary_key) and
58
+ check_constraints(old_table, new_table).empty? and
59
+ foreign_keys(old_table, new_table).empty? and
60
+ unique_constraints(old_table, new_table).empty?
61
+ end
62
+
63
+ # Returns a TableDiff if tables are different, nil otherwise
64
+ def compare old_table, new_table
65
+ ### Preconditions
66
+ raise ArgumentError, "old_table is not a Dbsketch::Model::Table" unless nil == old_table or old_table.is_a? Dbsketch::Model::Table
67
+ raise ArgumentError, "new_table is not a Dbsketch::Model::Table" unless nil == new_table or new_table.is_a? Dbsketch::Model::Table
68
+ ###
69
+ if not are_equivalent? old_table, new_table
70
+ primary_key_diff = @primary_key_comparator.compare(old_table.primary_key, new_table.primary_key) if nil != old_table and nil != new_table
71
+ TableDiff.new(
72
+ old_table, new_table,
73
+ columns(old_table, new_table),
74
+ primary_key_diff,
75
+ check_constraints(old_table, new_table),
76
+ foreign_keys(old_table, new_table),
77
+ unique_constraints(old_table, new_table)
78
+ )
79
+ end
80
+ end
81
+
82
+ private
83
+
84
+ def columns old_table, new_table
85
+ diffs = []
86
+ if nil != old_table and nil != new_table
87
+ diffs = old_table.columns.select { |old_c| not new_table.has_column? old_c.name }.map do |old_c|
88
+ (old_c.is_a? Dbsketch::Model::Column) ? @column_comparator.compare(old_c, nil) : @computed_column_comparator.compare(old_c, nil)
89
+ end
90
+ diffs << new_table.columns.select { |new_c| not old_table.has_column? new_c.name }.map do |new_c|
91
+ (new_c.is_a? Dbsketch::Model::Column) ? @column_comparator.compare(nil, new_c) : @computed_column_comparator.compare(nil, new_c)
92
+ end
93
+ diffs << old_table.columns.select { |old_c| new_table.has_column? old_c.name }.map do |old_c|
94
+ if old_c.class == new_table[old_c.name].class
95
+ (old_c.is_a? Dbsketch::Model::Column) ? @column_comparator.compare(old_c, new_table[old_c.name]) : @computed_column_comparator.compare(old_c, new_table[old_c.name])
96
+ else
97
+ Diff.new old_c, new_table[old_c.name]
98
+ end
99
+ end
100
+ end
101
+ diffs.flatten.compact
102
+ end
103
+
104
+ def check_constraints old_table, new_table
105
+ diffs = []
106
+ if nil != old_table and nil != new_table
107
+ diffs = old_table.check_constraints.map do |old_c|
108
+ if new_table.has_check_constraint? old_c.name
109
+ @check_constraint_comparator.compare(old_c, new_table.check_constraint(old_c.name))
110
+ else
111
+ @check_constraint_comparator.compare(old_c, nil)
112
+ end
113
+ end
114
+ diffs << new_table.check_constraints.select { |new_c| not old_table.has_check_constraint? new_c.name }.map do |new_c|
115
+ @check_constraint_comparator.compare(nil, new_c)
116
+ end
117
+ end
118
+ diffs.flatten.compact
119
+ end
120
+
121
+ def foreign_keys old_table, new_table
122
+ diffs = []
123
+ if nil != old_table and nil != new_table
124
+ diffs = old_table.foreign_keys.map do |old_k|
125
+ if new_table.has_foreign_key? old_k.name
126
+ @foreign_key_comparator.compare(old_k, new_table.foreign_key(old_k.name))
127
+ else
128
+ @foreign_key_comparator.compare(old_k, nil)
129
+ end
130
+ end
131
+ diffs << new_table.foreign_keys.select { |new_k| not old_table.has_foreign_key? new_k.name }.map do |new_k|
132
+ @foreign_key_comparator.compare(nil, new_k)
133
+ end
134
+ end
135
+ diffs.flatten.compact
136
+ end
137
+
138
+ def unique_constraints old_table, new_table
139
+ diffs = []
140
+ if nil != old_table and nil != new_table
141
+ diffs = old_table.unique_constraints.map do |old_c|
142
+ if new_table.has_unique_constraint? old_c.name
143
+ @unique_constraint_comparator.compare(old_c, new_table.unique_constraint(old_c.name))
144
+ else
145
+ @unique_constraint_comparator.compare(old_c, nil)
146
+ end
147
+ end
148
+ diffs << new_table.unique_constraints.select { |new_c| not old_table.has_unique_constraint? new_c.name }.map do |new_c|
149
+ @unique_constraint_comparator.compare(nil, new_c)
150
+ end
151
+ end
152
+ diffs.flatten.compact
153
+ end
154
+
155
+ end
156
+
157
+ end
158
+ end
@@ -0,0 +1,53 @@
1
+ ########################################################################################################################
2
+ # Compute differences between two triggers
3
+ ########################################################################################################################
4
+
5
+ require_relative '../model/trigger'
6
+ require_relative 'comparison_error'
7
+ require_relative 'diff'
8
+
9
+ module Dbsketch
10
+ module Comparison
11
+
12
+ class TriggerDiff < Diff
13
+ def initialize old_trigger, new_trigger
14
+ super old_trigger, new_trigger
15
+ if change?
16
+ @target = Diff.new(old_trigger.target.name, new_trigger.target.name) if old_trigger.target.name != new_trigger.target.name
17
+ @activation_time = Diff.new(old_trigger.activation_time, new_trigger.activation_time) if old_trigger.activation_time != new_trigger.activation_time
18
+ @algo = Diff.new(old_trigger.algo, new_trigger.algo) if old_trigger.algo != new_trigger.algo
19
+ end
20
+ end
21
+ attr_reader :target, :activation_time, :algo
22
+ alias :old_trigger :old_value
23
+ alias :new_trigger :new_value
24
+ end
25
+
26
+ end
27
+ end
28
+
29
+ module Dbsketch
30
+ module Comparison
31
+
32
+ class TriggerComparator
33
+
34
+ def are_equivalent? old_trigger, new_trigger
35
+ ### Preconditions
36
+ raise ArgumentError, "old_trigger is not a Dbsketch::Model::Trigger" unless nil == old_trigger or old_trigger.is_a? Dbsketch::Model::Trigger
37
+ raise ArgumentError, "new_trigger is not a Dbsketch::Model::Trigger" unless nil == new_trigger or new_trigger.is_a? Dbsketch::Model::Trigger
38
+ ###
39
+ (nil != old_trigger and nil != new_trigger) and (old_trigger.target.name == new_trigger.target.name) and (old_trigger.activation_time == new_trigger.activation_time) and (old_trigger.algo == new_trigger.algo)
40
+ end
41
+
42
+ def compare old_trigger, new_trigger
43
+ ### Preconditions
44
+ raise ArgumentError, "old_trigger is not a Dbsketch::Model::Trigger" unless nil == old_trigger or old_trigger.is_a? Dbsketch::Model::Trigger
45
+ raise ArgumentError, "new_trigger is not a Dbsketch::Model::Trigger" unless nil == new_trigger or new_trigger.is_a? Dbsketch::Model::Trigger
46
+ ###
47
+ TriggerDiff.new(old_trigger, new_trigger) if not are_equivalent? old_trigger, new_trigger
48
+ end
49
+
50
+ end
51
+
52
+ end
53
+ end
@@ -0,0 +1,51 @@
1
+ ########################################################################################################################
2
+ # Compute differences between two types
3
+ ########################################################################################################################
4
+
5
+ require_relative '../model/type'
6
+ require_relative 'diff'
7
+
8
+ module Dbsketch
9
+ module Comparison
10
+
11
+ class TypeDiff < Diff
12
+ def initialize old_type, new_type
13
+ ### Preconditions
14
+ raise ArgumentError, "old_type is not a Dbsketch::Model::Type" unless old_type.is_a? Dbsketch::Model::Type
15
+ raise ArgumentError, "new_type is not a Dbsketch::Model::Type" unless new_type.is_a? Dbsketch::Model::Type
16
+ ###
17
+ super old_type, new_type
18
+ @sql_type = Diff.new(old_type.sql_type, new_type.sql_type) if (old_type.sql_type != new_type.sql_type)
19
+ @sizes = Diff.new(old_type.sizes, new_type.sizes) if (old_type.sizes != new_type.sizes)
20
+ end
21
+ attr_reader :sql_type, :sizes
22
+ end
23
+
24
+ end
25
+ end
26
+
27
+ module Dbsketch
28
+ module Comparison
29
+
30
+ class TypeComparator
31
+
32
+ def are_equivalent? old_type, new_type
33
+ ### Preconditions
34
+ raise ArgumentError, "old_type is not a Dbsketch::Model::Type" unless old_type.is_a? Dbsketch::Model::Type
35
+ raise ArgumentError, "new_type is not a Dbsketch::Model::Type" unless new_type.is_a? Dbsketch::Model::Type
36
+ ###
37
+ (old_type.sql_type == new_type.sql_type) and (old_type.sizes == new_type.sizes)
38
+ end
39
+
40
+ def compare old_type, new_type
41
+ ### Preconditions
42
+ raise ArgumentError, "old_type is not a Dbsketch::Model::Type" unless old_type.is_a? Dbsketch::Model::Type
43
+ raise ArgumentError, "new_type is not a Dbsketch::Model::Type" unless new_type.is_a? Dbsketch::Model::Type
44
+ ###
45
+ TypeDiff.new(old_type, new_type) if not are_equivalent? old_type, new_type
46
+ end
47
+
48
+ end
49
+
50
+ end
51
+ end