github.com/dhax/go-base@v0.0.0-20231004214136-8be7e5c1972b/database/migrate/main.go (about) 1 // Package migrate implements postgres migrations. 2 package migrate 3 4 import ( 5 "log" 6 7 "github.com/dhax/go-base/database" 8 "github.com/go-pg/migrations" 9 "github.com/go-pg/pg" 10 ) 11 12 // Migrate runs go-pg migrations 13 func Migrate(args []string) { 14 db, err := database.DBConn() 15 if err != nil { 16 log.Fatal(err) 17 } 18 19 err = db.RunInTransaction(func(tx *pg.Tx) error { 20 oldVersion, newVersion, err := migrations.Run(tx, args...) 21 if err != nil { 22 return err 23 } 24 if newVersion != oldVersion { 25 log.Printf("migrated from version %d to %d\n", oldVersion, newVersion) 26 } else { 27 log.Printf("version is %d\n", oldVersion) 28 } 29 return nil 30 }) 31 if err != nil { 32 log.Fatal(err) 33 } 34 35 } 36 37 // Reset runs reverts all migrations to version 0 and then applies all migrations to latest 38 func Reset() { 39 db, err := database.DBConn() 40 if err != nil { 41 log.Fatal(err) 42 } 43 44 version, err := migrations.Version(db) 45 if err != nil { 46 log.Fatal(err) 47 } 48 49 err = db.RunInTransaction(func(tx *pg.Tx) error { 50 for version != 0 { 51 oldVersion, newVersion, err := migrations.Run(tx, "down") 52 if err != nil { 53 return err 54 } 55 log.Printf("migrated from version %d to %d\n", oldVersion, newVersion) 56 version = newVersion 57 } 58 return nil 59 }) 60 if err != nil { 61 log.Fatal(err) 62 } 63 }