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  }