db_schema 0.3.1 → 0.4
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.
- checksums.yaml +5 -5
- data/README.md +7 -3
- data/db_schema.gemspec +2 -1
- data/lib/db_schema.rb +4 -3
- data/lib/db_schema/normalizer.rb +2 -2
- data/lib/db_schema/reader.rb +8 -350
- data/lib/db_schema/version.rb +1 -1
- metadata +22 -43
- data/lib/db_schema/definitions.rb +0 -10
- data/lib/db_schema/definitions/check_constraint.rb +0 -21
- data/lib/db_schema/definitions/enum.rb +0 -23
- data/lib/db_schema/definitions/extension.rb +0 -12
- data/lib/db_schema/definitions/field.rb +0 -47
- data/lib/db_schema/definitions/field/array.rb +0 -30
- data/lib/db_schema/definitions/field/base.rb +0 -108
- data/lib/db_schema/definitions/field/binary.rb +0 -9
- data/lib/db_schema/definitions/field/bit_string.rb +0 -15
- data/lib/db_schema/definitions/field/boolean.rb +0 -9
- data/lib/db_schema/definitions/field/character.rb +0 -19
- data/lib/db_schema/definitions/field/custom.rb +0 -32
- data/lib/db_schema/definitions/field/datetime.rb +0 -30
- data/lib/db_schema/definitions/field/extensions/chkpass.rb +0 -9
- data/lib/db_schema/definitions/field/extensions/citext.rb +0 -9
- data/lib/db_schema/definitions/field/extensions/cube.rb +0 -9
- data/lib/db_schema/definitions/field/extensions/hstore.rb +0 -9
- data/lib/db_schema/definitions/field/extensions/isn.rb +0 -37
- data/lib/db_schema/definitions/field/extensions/ltree.rb +0 -9
- data/lib/db_schema/definitions/field/extensions/seg.rb +0 -9
- data/lib/db_schema/definitions/field/geometric.rb +0 -33
- data/lib/db_schema/definitions/field/json.rb +0 -13
- data/lib/db_schema/definitions/field/monetary.rb +0 -9
- data/lib/db_schema/definitions/field/network.rb +0 -17
- data/lib/db_schema/definitions/field/numeric.rb +0 -30
- data/lib/db_schema/definitions/field/range.rb +0 -29
- data/lib/db_schema/definitions/field/text_search.rb +0 -13
- data/lib/db_schema/definitions/field/uuid.rb +0 -9
- data/lib/db_schema/definitions/foreign_key.rb +0 -44
- data/lib/db_schema/definitions/index.rb +0 -66
- data/lib/db_schema/definitions/index/column.rb +0 -32
- data/lib/db_schema/definitions/index/expression.rb +0 -19
- data/lib/db_schema/definitions/index/table_field.rb +0 -19
- data/lib/db_schema/definitions/schema.rb +0 -36
- data/lib/db_schema/definitions/table.rb +0 -130
@@ -1,19 +0,0 @@
|
|
1
|
-
module DbSchema
|
2
|
-
module Definitions
|
3
|
-
class Index
|
4
|
-
class Expression < Column
|
5
|
-
def expression?
|
6
|
-
true
|
7
|
-
end
|
8
|
-
|
9
|
-
def index_name_segment
|
10
|
-
name.scan(/\b[A-Za-z0-9_]+\b/).join('_')
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_sequel
|
14
|
-
Sequel.lit("(#{name})")
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
module DbSchema
|
2
|
-
module Definitions
|
3
|
-
class Schema
|
4
|
-
include Dry::Equalizer(:tables, :enums, :extensions)
|
5
|
-
attr_reader :tables, :enums, :extensions
|
6
|
-
attr_writer :tables
|
7
|
-
|
8
|
-
def initialize(tables: [], enums: [], extensions: [])
|
9
|
-
@tables = tables
|
10
|
-
@enums = enums
|
11
|
-
@extensions = extensions
|
12
|
-
end
|
13
|
-
|
14
|
-
def table(table_name)
|
15
|
-
tables.find { |table| table.name == table_name } || NullTable.new
|
16
|
-
end
|
17
|
-
alias_method :[], :table
|
18
|
-
|
19
|
-
def has_table?(table_name)
|
20
|
-
!table(table_name).is_a?(NullTable)
|
21
|
-
end
|
22
|
-
|
23
|
-
def enum(enum_name)
|
24
|
-
enums.find { |enum| enum.name == enum_name } || NullEnum.new
|
25
|
-
end
|
26
|
-
|
27
|
-
def has_enum?(enum_name)
|
28
|
-
!enum(enum_name).is_a?(NullEnum)
|
29
|
-
end
|
30
|
-
|
31
|
-
def has_extension?(extension_name)
|
32
|
-
extensions.any? { |extension| extension.name == extension_name }
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,130 +0,0 @@
|
|
1
|
-
module DbSchema
|
2
|
-
module Definitions
|
3
|
-
class Table
|
4
|
-
include Dry::Equalizer(:name, :fields, :indexes, :checks, :foreign_keys)
|
5
|
-
attr_reader :name, :fields, :indexes, :checks, :foreign_keys
|
6
|
-
|
7
|
-
def initialize(name, fields: [], indexes: [], checks: [], foreign_keys: [])
|
8
|
-
@name = name.to_sym
|
9
|
-
@fields = fields
|
10
|
-
@indexes = indexes
|
11
|
-
@checks = checks
|
12
|
-
@foreign_keys = foreign_keys
|
13
|
-
end
|
14
|
-
|
15
|
-
def has_expressions?
|
16
|
-
fields.any?(&:default_is_expression?) ||
|
17
|
-
indexes.any?(&:has_expressions?) ||
|
18
|
-
checks.any?
|
19
|
-
end
|
20
|
-
|
21
|
-
def field(field_name)
|
22
|
-
fields.find { |field| field.name == field_name } || NullField.new
|
23
|
-
end
|
24
|
-
alias_method :[], :field
|
25
|
-
|
26
|
-
def has_field?(field_name)
|
27
|
-
!field(field_name).is_a?(NullField)
|
28
|
-
end
|
29
|
-
|
30
|
-
def index(index_name)
|
31
|
-
indexes.find { |index| index.name == index_name } || NullIndex.new
|
32
|
-
end
|
33
|
-
|
34
|
-
def has_index?(index_name)
|
35
|
-
!index(index_name).is_a?(NullIndex)
|
36
|
-
end
|
37
|
-
|
38
|
-
def has_index_on?(*field_names)
|
39
|
-
indexes.any? do |index|
|
40
|
-
index.columns.none?(&:expression?) && index.columns.map(&:name) == field_names
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def has_unique_index_on?(*field_names)
|
45
|
-
indexes.any? do |index|
|
46
|
-
index.unique? && index.columns.none?(&:expression?) && index.columns.map(&:name) == field_names
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def check(check_name)
|
51
|
-
checks.find { |check| check.name == check_name } || NullCheckConstraint.new
|
52
|
-
end
|
53
|
-
|
54
|
-
def has_check?(check_name)
|
55
|
-
!check(check_name).is_a?(NullCheckConstraint)
|
56
|
-
end
|
57
|
-
|
58
|
-
def foreign_key(fkey_name)
|
59
|
-
foreign_keys.find { |fkey| fkey.name == fkey_name } || NullForeignKey.new
|
60
|
-
end
|
61
|
-
|
62
|
-
def has_foreign_key?(fkey_name)
|
63
|
-
!foreign_key(fkey_name).is_a?(NullForeignKey)
|
64
|
-
end
|
65
|
-
|
66
|
-
def has_foreign_key_to?(other_table_name)
|
67
|
-
foreign_keys.any? { |fkey| fkey.table == other_table_name }
|
68
|
-
end
|
69
|
-
|
70
|
-
def with_name(new_name)
|
71
|
-
Table.new(
|
72
|
-
new_name,
|
73
|
-
fields: fields,
|
74
|
-
indexes: indexes,
|
75
|
-
checks: checks,
|
76
|
-
foreign_keys: foreign_keys
|
77
|
-
)
|
78
|
-
end
|
79
|
-
|
80
|
-
def with_fields(new_fields)
|
81
|
-
Table.new(
|
82
|
-
name,
|
83
|
-
fields: new_fields,
|
84
|
-
indexes: indexes,
|
85
|
-
checks: checks,
|
86
|
-
foreign_keys: foreign_keys
|
87
|
-
)
|
88
|
-
end
|
89
|
-
|
90
|
-
def with_indexes(new_indexes)
|
91
|
-
Table.new(
|
92
|
-
name,
|
93
|
-
fields: fields,
|
94
|
-
indexes: new_indexes,
|
95
|
-
checks: checks,
|
96
|
-
foreign_keys: foreign_keys
|
97
|
-
)
|
98
|
-
end
|
99
|
-
|
100
|
-
def with_checks(new_checks)
|
101
|
-
Table.new(
|
102
|
-
name,
|
103
|
-
fields: fields,
|
104
|
-
indexes: indexes,
|
105
|
-
checks: new_checks,
|
106
|
-
foreign_keys: foreign_keys
|
107
|
-
)
|
108
|
-
end
|
109
|
-
|
110
|
-
def with_foreign_keys(new_foreign_keys)
|
111
|
-
Table.new(
|
112
|
-
name,
|
113
|
-
fields: fields,
|
114
|
-
indexes: indexes,
|
115
|
-
checks: checks,
|
116
|
-
foreign_keys: new_foreign_keys
|
117
|
-
)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
class NullTable < Table
|
122
|
-
def initialize
|
123
|
-
@fields = []
|
124
|
-
@indexes = []
|
125
|
-
@checks = []
|
126
|
-
@foreign_keys = []
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
130
|
-
end
|