blob: 766f48ef339c0bd0ad80c2d530bf4f0d67d48e8a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
# frozen_string_literal: true
module Gitlab
module Database
module SchemaValidation
class Inconsistency
def initialize(validator_class, structure_sql_object, database_object)
@validator_class = validator_class
@structure_sql_object = structure_sql_object
@database_object = database_object
end
def error_message
format(validator_class::ERROR_MESSAGE, object_name)
end
def type
validator_class.name.demodulize.underscore
end
def object_type
structure_sql_object&.class&.name&.demodulize || database_object&.class&.name&.demodulize
end
def table_name
structure_sql_object&.table_name || database_object&.table_name
end
def object_name
structure_sql_object&.name || database_object&.name
end
def diff
Diffy::Diff.new(structure_sql_statement, database_statement)
end
def inspect
<<~MSG
#{'-' * 54}
#{error_message}
Diff:
#{diff.to_s(:color)}
#{'-' * 54}
MSG
end
def structure_sql_statement
return unless structure_sql_object
"#{structure_sql_object.statement}\n"
end
def database_statement
return unless database_object
"#{database_object.statement}\n"
end
private
attr_reader :validator_class, :structure_sql_object, :database_object
end
end
end
end
|