github.com/mg98/scriptup@v0.1.0/pkg/scriptup/status.go (about)

     1  package scriptup
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/mg98/scriptup/pkg/scriptup/migration"
     6  	"github.com/mg98/scriptup/pkg/scriptup/migration_state"
     7  )
     8  
     9  func Status(cfg *Config) error {
    10  	s, err := cfg.InitMigrationState()
    11  	if err != nil {
    12  		return err
    13  	}
    14  	ms, err := getUnappliedMigrations(s)
    15  	if err != nil {
    16  		return err
    17  	}
    18  	for _, m := range ms {
    19  		fmt.Println(m.Name)
    20  	}
    21  
    22  	return nil
    23  }
    24  
    25  // getUnappliedMigrations returns all migrations from the migration directory
    26  // which are dated after the latest migration in the storage.
    27  func getUnappliedMigrations(state *migration_state.MigrationState) ([]*migration.Migration, error) {
    28  	latestM, err := state.Latest()
    29  	if err != nil {
    30  		return nil, err
    31  	}
    32  	ms, err := state.Files()
    33  	if err != nil {
    34  		return nil, err
    35  	}
    36  	var res []*migration.Migration
    37  	for _, m := range ms {
    38  		if latestM == nil || m.Date.After(latestM.Date) {
    39  			res = append(res, m)
    40  		}
    41  	}
    42  	return res, nil
    43  }