Skip to content

Commit 3cca3e8

Browse files
authored
Merge pull request #206 from erizocosmico/fix/migration-order
fix order of generated tables in migrations
2 parents 3192036 + a19343f commit 3cca3e8

File tree

2 files changed

+47
-10
lines changed

2 files changed

+47
-10
lines changed

generator/migration.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,7 @@ func (cs ChangeSet) sorted(dropIndex, createIndex map[string]*TableSchema) (Chan
285285
continue
286286
}
287287

288-
if r.inverse {
289-
createGraph.dependsOn(c.Name, r.name)
290-
} else {
291-
createGraph.dependsOn(r.name, c.Name)
292-
}
288+
createGraph.dependsOn(r.name, c.Name)
293289
}
294290
} else {
295291
createGraph.add(c.Name)
@@ -302,11 +298,7 @@ func (cs ChangeSet) sorted(dropIndex, createIndex map[string]*TableSchema) (Chan
302298
continue
303299
}
304300

305-
if r.inverse {
306-
dropGraph.dependsOn(c.Name, r.name)
307-
} else {
308-
dropGraph.dependsOn(r.name, c.Name)
309-
}
301+
dropGraph.dependsOn(r.name, c.Name)
310302
}
311303
} else {
312304
dropGraph.add(c.Name)

generator/migration_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,51 @@ func TestNewMigration(t *testing.T) {
2121
require.Equal(t, migration.Lock, new)
2222
}
2323

24+
func TestMigrationOrder(t *testing.T) {
25+
a := mkTable("a",
26+
mkCol("id", SerialColumn, true, false, nil),
27+
mkCol("name", TextColumn, false, true, nil),
28+
)
29+
30+
b := mkTable("b",
31+
mkCol("id", SerialColumn, true, false, nil),
32+
mkCol("a_id", SerialColumn, false, true, mkRef("a", "id", true)),
33+
)
34+
35+
c := mkTable("c",
36+
mkCol("id", SerialColumn, true, false, nil),
37+
mkCol("a_id", SerialColumn, false, true, mkRef("a", "id", true)),
38+
mkCol("b_id", SerialColumn, false, true, mkRef("b", "id", true)),
39+
)
40+
41+
d := mkTable("d",
42+
mkCol("id", SerialColumn, true, false, nil),
43+
mkCol("name", TextColumn, false, true, nil),
44+
)
45+
46+
old := mkSchema()
47+
new := mkSchema(a, b, c, d)
48+
migration, err := NewMigration(old, new)
49+
require.NoError(t, err)
50+
51+
expectedUp := ChangeSet{
52+
&CreateTable{a},
53+
&CreateTable{b},
54+
&CreateTable{c},
55+
&CreateTable{d},
56+
}
57+
58+
expectedDown := ChangeSet{
59+
&DropTable{"d"},
60+
&DropTable{"c"},
61+
&DropTable{"b"},
62+
&DropTable{"a"},
63+
}
64+
65+
require.Equal(t, expectedUp, migration.Up)
66+
require.Equal(t, expectedDown, migration.Down)
67+
}
68+
2469
func TestNewMigration_SelfRef(t *testing.T) {
2570
old := mkSchema()
2671
new := mkSchema(mkTable(

0 commit comments

Comments
 (0)