mirror of https://github.com/pressly/goose.git
Merge pull request #135 from tbaud0n/master
Add verbose option to print executed sql statementspull/149/head
commit
d431110f17
|
@ -10,8 +10,9 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
flags = flag.NewFlagSet("goose", flag.ExitOnError)
|
flags = flag.NewFlagSet("goose", flag.ExitOnError)
|
||||||
dir = flags.String("dir", ".", "directory with migration files")
|
dir = flags.String("dir", ".", "directory with migration files")
|
||||||
|
verbose = flags.Bool("v", false, "enable verbose mode")
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
@ -24,6 +25,10 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if *verbose {
|
||||||
|
goose.SetVerbose(true)
|
||||||
|
}
|
||||||
|
|
||||||
switch args[0] {
|
switch args[0] {
|
||||||
case "create":
|
case "create":
|
||||||
if err := goose.Run("create", nil, *dir, args[1:]...); err != nil {
|
if err := goose.Run("create", nil, *dir, args[1:]...); err != nil {
|
||||||
|
|
8
goose.go
8
goose.go
|
@ -3,6 +3,7 @@ package goose
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
@ -12,8 +13,15 @@ var (
|
||||||
minVersion = int64(0)
|
minVersion = int64(0)
|
||||||
maxVersion = int64((1 << 63) - 1)
|
maxVersion = int64((1 << 63) - 1)
|
||||||
timestampFormat = "20060102150405"
|
timestampFormat = "20060102150405"
|
||||||
|
verbose = false
|
||||||
|
reMatchSQLComments = regexp.MustCompile(`(--.*)`)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// SetVerbose set the goose verbosity mode
|
||||||
|
func SetVerbose(v bool) {
|
||||||
|
verbose = v
|
||||||
|
}
|
||||||
|
|
||||||
// Run runs a goose command.
|
// Run runs a goose command.
|
||||||
func Run(command string, db *sql.DB, dir string, args ...string) error {
|
func Run(command string, db *sql.DB, dir string, args ...string) error {
|
||||||
switch command {
|
switch command {
|
||||||
|
|
|
@ -168,13 +168,17 @@ func runSQLMigration(db *sql.DB, scriptFile string, v int64, direction bool) err
|
||||||
if useTx {
|
if useTx {
|
||||||
// TRANSACTION.
|
// TRANSACTION.
|
||||||
|
|
||||||
|
printInfo("Begin transaction\n")
|
||||||
|
|
||||||
tx, err := db.Begin()
|
tx, err := db.Begin()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, query := range statements {
|
for _, query := range statements {
|
||||||
|
printInfo("Executing statement : %s\n", cleanStatement(query))
|
||||||
if _, err = tx.Exec(query); err != nil {
|
if _, err = tx.Exec(query); err != nil {
|
||||||
|
printInfo("Rollback transaction\n")
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -182,21 +186,25 @@ func runSQLMigration(db *sql.DB, scriptFile string, v int64, direction bool) err
|
||||||
|
|
||||||
if direction {
|
if direction {
|
||||||
if _, err := tx.Exec(GetDialect().insertVersionSQL(), v, direction); err != nil {
|
if _, err := tx.Exec(GetDialect().insertVersionSQL(), v, direction); err != nil {
|
||||||
|
printInfo("Rollback transaction\n")
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if _, err := tx.Exec(GetDialect().deleteVersionSQL(), v); err != nil {
|
if _, err := tx.Exec(GetDialect().deleteVersionSQL(), v); err != nil {
|
||||||
|
printInfo("Rollback transaction\n")
|
||||||
tx.Rollback()
|
tx.Rollback()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printInfo("Commit transaction\n")
|
||||||
return tx.Commit()
|
return tx.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
// NO TRANSACTION.
|
// NO TRANSACTION.
|
||||||
for _, query := range statements {
|
for _, query := range statements {
|
||||||
|
printInfo("Executing statement : %s\n", cleanStatement(query))
|
||||||
if _, err := db.Exec(query); err != nil {
|
if _, err := db.Exec(query); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -207,3 +215,13 @@ func runSQLMigration(db *sql.DB, scriptFile string, v int64, direction bool) err
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func printInfo(s string, args ...interface{}) {
|
||||||
|
if verbose {
|
||||||
|
log.Printf(s, args...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func cleanStatement(s string) string {
|
||||||
|
return reMatchSQLComments.ReplaceAllString(s, ``)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue