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  }