github.com/mg98/scriptup@v0.1.0/pkg/scriptup/down.go (about) 1 package scriptup 2 3 import ( 4 "github.com/mg98/scriptup/pkg/scriptup/storage" 5 ) 6 7 func MigrateDown(cfg *Config, steps int) error { 8 s, err := cfg.InitMigrationState() 9 if err != nil { 10 return err 11 } 12 defer s.Close() 13 14 migrations, err := s.All(storage.OrderDesc) 15 if err != nil { 16 return err 17 } 18 if steps >= 0 { 19 migrations = migrations[:steps] 20 } 21 22 for _, m := range migrations { 23 if err := m.Parse(cfg.Executor); err != nil { 24 return err 25 } 26 if err := m.Down(); err != nil { 27 return err 28 } 29 if err := s.DropLatest(); err != nil { 30 return err 31 } 32 } 33 34 return nil 35 }