-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdrift_tables.go
59 lines (47 loc) · 1.43 KB
/
drift_tables.go
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
package pgutil
import "fmt"
type TableModifier struct {
d TableDescription
}
func NewTableModifier(_ SchemaDescription, d TableDescription) TableModifier {
return TableModifier{
d: d,
}
}
func (m TableModifier) Key() string {
return fmt.Sprintf("%q.%q", m.d.Namespace, m.d.Name)
}
func (m TableModifier) ObjectType() string {
return "table"
}
func (m TableModifier) Description() TableDescription {
return m.d
}
func (m TableModifier) Create() string {
return fmt.Sprintf("CREATE TABLE IF NOT EXISTS %s();", m.Key())
}
func (m TableModifier) Drop() string {
return fmt.Sprintf("DROP TABLE IF EXISTS %s;", m.Key())
}
type TableComponentModifiers struct {
Columns []ColumnModifier
Constraints []ConstraintModifier
Indexes []IndexModifier
}
func NewTableComponentModifiers(schema SchemaDescription, tables []TableDescription) TableComponentModifiers {
var (
columns []ColumnModifier
constraints []ConstraintModifier
indexes []IndexModifier
)
for _, table := range tables {
columns = append(columns, wrapWithContextValues(schema, table, table.Columns, NewColumnModifier)...)
constraints = append(constraints, wrapWithContextValues(schema, table, table.Constraints, NewConstraintModifier)...)
indexes = append(indexes, wrapWithContextValues(schema, table, table.Indexes, NewIndexModifier)...)
}
return TableComponentModifiers{
Columns: columns,
Constraints: constraints,
Indexes: indexes,
}
}