github.com/ztalab/ZACA@v0.0.1/database/mysql/migration.go (about) 1 package mysql 2 3 import ( 4 "fmt" 5 6 "github.com/golang-migrate/migrate/v4" 7 "github.com/golang-migrate/migrate/v4/database/mysql" 8 _ "github.com/golang-migrate/migrate/v4/source/file" 9 "github.com/ztalab/ZACA/pkg/logger" 10 _ "gorm.io/driver/mysql" 11 "gorm.io/gorm" 12 ) 13 14 func Migrate(db *gorm.DB) error { 15 lo := logger.Named("migration") 16 sql, err := db.DB() 17 if err != nil { 18 return fmt.Errorf("failed to get DB instance: %v", err) 19 } 20 driver, err := mysql.WithInstance(sql, &mysql.Config{}) 21 m, err := migrate.NewWithDatabaseInstance( 22 "file://database/mysql/migrations/", 23 "mysql", driver) 24 if err != nil { 25 return fmt.Errorf("migrate instance error: %v", err) 26 } 27 if err = m.Up(); err != nil { 28 if err == migrate.ErrNoChange { 29 lo.Info("no changes.") 30 return nil 31 } 32 return fmt.Errorf("MySQL migration exception: %v", err) 33 } 34 lo.Info("Migrations success.") 35 return nil 36 }