github.com/eatigo/migrate@v3.0.2-0.20210729130915-7610befb1b6b+incompatible/cli/migrate/commands.go (about) 1 package main 2 3 import ( 4 "github.com/eatigo/migrate" 5 _ "github.com/eatigo/migrate/database/stub" // TODO remove again 6 _ "github.com/eatigo/migrate/source/file" 7 "os" 8 "fmt" 9 ) 10 11 func createCmd(dir string, timestamp int64, name string, ext string) { 12 base := fmt.Sprintf("%v%v_%v.", dir, timestamp, name) 13 os.MkdirAll(dir, os.ModePerm) 14 createFile(base + "up" + ext) 15 createFile(base + "down" + ext) 16 } 17 18 func createFile(fname string) { 19 if _, err := os.Create(fname); err != nil { 20 log.fatalErr(err) 21 } 22 } 23 24 func gotoCmd(m *migrate.Migrate, v uint) { 25 if err := m.Migrate(v); err != nil { 26 if err != migrate.ErrNoChange { 27 log.fatalErr(err) 28 } else { 29 log.Println(err) 30 } 31 } 32 } 33 34 func upCmd(m *migrate.Migrate, limit int) { 35 if limit >= 0 { 36 if err := m.Steps(limit); err != nil { 37 if err != migrate.ErrNoChange { 38 log.fatalErr(err) 39 } else { 40 log.Println(err) 41 } 42 } 43 } else { 44 if err := m.Up(); err != nil { 45 if err != migrate.ErrNoChange { 46 log.fatalErr(err) 47 } else { 48 log.Println(err) 49 } 50 } 51 } 52 } 53 54 func downCmd(m *migrate.Migrate, limit int) { 55 if limit >= 0 { 56 if err := m.Steps(-limit); err != nil { 57 if err != migrate.ErrNoChange { 58 log.fatalErr(err) 59 } else { 60 log.Println(err) 61 } 62 } 63 } else { 64 if err := m.Down(); err != nil { 65 if err != migrate.ErrNoChange { 66 log.fatalErr(err) 67 } else { 68 log.Println(err) 69 } 70 } 71 } 72 } 73 74 func dropCmd(m *migrate.Migrate) { 75 if err := m.Drop(); err != nil { 76 log.fatalErr(err) 77 } 78 } 79 80 func forceCmd(m *migrate.Migrate, v int) { 81 if err := m.Force(v); err != nil { 82 log.fatalErr(err) 83 } 84 } 85 86 func versionCmd(m *migrate.Migrate) { 87 v, dirty, err := m.Version() 88 if err != nil { 89 log.fatalErr(err) 90 } 91 if dirty { 92 log.Printf("%v (dirty)\n", v) 93 } else { 94 log.Println(v) 95 } 96 }