MCPcopy
hub / github.com/1Panel-dev/KubePi / RunMigrate

Function RunMigrate

migrate/migrate.go:15–65  ·  view source on GitHub ↗
(db *storm.DB, logger *logrus.Logger)

Source from the content-addressed store, hash-verified

13var definedMigrations = append([]migrations.Migration{}, v1.Migrations...)
14
15func RunMigrate(db *storm.DB, logger *logrus.Logger) {
16 var currentDbVersion int
17 if err := db.Get("db", "current_db_version", &currentDbVersion); err != nil {
18 if errors.Is(err, storm.ErrNotFound) {
19 currentDbVersion = 0
20 } else {
21 logger.Errorf("can not get current db version ,%s", err.Error())
22 os.Exit(1)
23 }
24 }
25 logger.Infof("current db version: %d", currentDbVersion)
26
27 var prepareExecuteMigrationVersions []int
28
29 for i := range definedMigrations {
30 if definedMigrations[i].Version > currentDbVersion {
31 prepareExecuteMigrationVersions = append(prepareExecuteMigrationVersions, definedMigrations[i].Version)
32 }
33 }
34
35 if len(prepareExecuteMigrationVersions) > 0 {
36 sort.Ints(prepareExecuteMigrationVersions)
37 lastVersion := prepareExecuteMigrationVersions[len(prepareExecuteMigrationVersions)-1]
38
39 tx, err := db.Begin(true)
40 if err != nil {
41 logger.Errorf("can not open transaction ,%s", err.Error())
42 os.Exit(1)
43 }
44 for i := range definedMigrations {
45 for j := range prepareExecuteMigrationVersions {
46 if definedMigrations[i].Version == prepareExecuteMigrationVersions[j] {
47 logger.Infof("executing db migration: [%d] %s", definedMigrations[i].Version, definedMigrations[i].Message)
48 if err := definedMigrations[i].Handler(tx); err != nil {
49 _ = tx.Rollback()
50 logger.Errorf("execute migration: [%d] %s failed,rollback it", definedMigrations[i].Version, err.Error())
51 os.Exit(1)
52 }
53 }
54 }
55 }
56 currentDbVersion = lastVersion
57 if err := tx.Set("db", "current_db_version", currentDbVersion); err != nil {
58 _ = tx.Rollback()
59 logger.Errorf("update db version failed %s ,rollback it", err.Error())
60 os.Exit(1)
61 }
62 logger.Infof("update db to version: %d", currentDbVersion)
63 _ = tx.Commit()
64 }
65}

Callers 1

runMigrationsMethod · 0.92

Calls 3

ErrorMethod · 0.80
GetMethod · 0.65
SetMethod · 0.45

Tested by

no test coverage detected