MCPcopy Index your code
hub / github.com/TruthHun/BookStack / RunMigration

Function RunMigration

commands/migrate/migrate.go:57–112  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

55}
56
57func RunMigration() {
58
59 if len(os.Args) >= 2 && os.Args[1] == "migrate" {
60
61 migrate, err := models.NewMigration().FindFirst()
62
63 if err != nil {
64 //log.Fatalf("migrations table %s", err)
65 migrate = models.NewMigration()
66 }
67 fmt.Println("Start migration databae... ")
68
69 for el := migrationList.items.Front(); el != nil; el = el.Next() {
70
71 //如果存在比当前版本大的版本,则依次升级
72 if item, ok := el.Value.(MigrationDatabase); ok && item.Version() > migrate.Version {
73 err := item.ValidUpdate(migrate.Version)
74 if err != nil {
75 log.Fatal(err)
76 }
77 err = item.ValidForBackupTableSchema()
78 if err != nil {
79 item.RollbackMigration()
80 log.Fatal(err)
81 }
82 err = item.ValidForUpdateTableSchema()
83 if err != nil {
84 item.RollbackMigration()
85 log.Fatal(err)
86 }
87 err = item.MigrationOldTableData()
88 if err != nil {
89 item.RollbackMigration()
90 log.Fatal(err)
91 }
92 err = item.MigrationNewTableData()
93 if err != nil {
94 item.RollbackMigration()
95 log.Fatal(err)
96 }
97 err = item.AddMigrationRecord(item.Version())
98 if err != nil {
99 item.RollbackMigration()
100 log.Fatal(err)
101 }
102 err = item.MigrationCleanup()
103 if err != nil {
104 item.RollbackMigration()
105 log.Fatal(err)
106 }
107 }
108 }
109 fmt.Println("Migration successful.")
110 os.Exit(0)
111 }
112}
113
114//导出数据库的表结构

Callers 1

RegisterCommandFunction · 0.92

Calls 11

NewMigrationFunction · 0.92
VersionMethod · 0.65
ValidUpdateMethod · 0.65
RollbackMigrationMethod · 0.65
MigrationOldTableDataMethod · 0.65
MigrationNewTableDataMethod · 0.65
AddMigrationRecordMethod · 0.65
MigrationCleanupMethod · 0.65
FindFirstMethod · 0.45

Tested by

no test coverage detected