WIP: migrations
This commit is contained in:
parent
bd54c060b9
commit
b57c01b3c4
14 changed files with 1282 additions and 0 deletions
57
migrations/main.go
Normal file
57
migrations/main.go
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
package migrations
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"flag"
|
||||
"os"
|
||||
|
||||
"github.com/pressly/goose"
|
||||
log "github.com/sirupsen/logrus"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
)
|
||||
|
||||
var (
|
||||
flags = flag.NewFlagSet("goose", flag.ExitOnError)
|
||||
dir = flags.String("dir", ".", "directory with migration files")
|
||||
)
|
||||
|
||||
func init() {
|
||||
_ = flags.Parse(os.Args[1:])
|
||||
args := flags.Args()
|
||||
|
||||
if len(args) < 1 {
|
||||
flags.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
command := args[0]
|
||||
|
||||
var dbUrl string
|
||||
var exists bool
|
||||
if dbUrl, exists = os.LookupEnv("DB_URL"); !exists {
|
||||
log.Fatalf("define database URL in environment variable DB_URL")
|
||||
}
|
||||
db, err := sql.Open("mysql", dbUrl)
|
||||
if err != nil {
|
||||
log.Fatalf("goose: failt to open DB: %v\n", err)
|
||||
}
|
||||
if err = goose.SetDialect("mysql"); err != nil {
|
||||
log.Fatalf("failed to set dialect: %v\n", err)
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err := db.Close(); err != nil {
|
||||
log.Fatalf("goose: failed to close DB: %v\n", err)
|
||||
}
|
||||
}()
|
||||
|
||||
arguments := make([]string, 0)
|
||||
if len(args) > 3 {
|
||||
arguments = append(arguments, args[3:]...)
|
||||
}
|
||||
|
||||
if err := goose.Run(command, db, *dir, arguments...); err != nil {
|
||||
log.Fatalf("goose %v: %v", command, err)
|
||||
}
|
||||
}
|
||||
Reference in a new issue