dbsketch 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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