migrate: consolidate usage of FinalizeMigration

was previously duplicated in migration_go and migration_sql
pull/2/head
Liam Staskawicz 2014-06-05 15:21:39 -07:00
parent 2c03705655
commit 9a61ce5e3f
3 changed files with 16 additions and 23 deletions

View File

@ -360,6 +360,20 @@ func CreateMigration(name, migrationType, dir string, t time.Time) (path string,
return
}
// Update the version table for the given migration,
// and finalize the transaction.
func FinalizeMigration(conf *DBConf, txn *sql.Tx, direction bool, v int64) error {
// XXX: drop goose_db_version table on some minimum version number?
stmt := conf.Driver.Dialect.insertVersionSql()
if _, err := txn.Exec(stmt, v, direction); err != nil {
txn.Rollback()
return err
}
return txn.Commit()
}
var goMigrationTemplate = template.Must(template.New("goose.go-migration").Parse(`
package main

View File

@ -129,14 +129,7 @@ func main() {
{{ .Func }}(txn)
// XXX: drop goose_db_version table on some minimum version number?
stmt := "{{ .InsertStmt }}"
if _, err = txn.Exec(stmt, int64({{ .Version }}), {{ .Direction }}); err != nil {
txn.Rollback()
log.Fatal("failed to write version: ", err)
}
err = txn.Commit()
err = goose.FinalizeMigration(&conf, txn, {{ .Direction }}, {{ .Version }})
if err != nil {
log.Fatal("Commit() failed:", err)
}

View File

@ -148,23 +148,9 @@ func runSQLMigration(conf *DBConf, db *sql.DB, script string, v int64, direction
}
}
if err = finalizeMigration(conf, txn, direction, v); err != nil {
if err = FinalizeMigration(conf, txn, direction, v); err != nil {
log.Fatalf("error finalizing migration %s, quitting. (%v)", filepath.Base(script), err)
}
return nil
}
// Update the version table for the given migration,
// and finalize the transaction.
func finalizeMigration(conf *DBConf, txn *sql.Tx, direction bool, v int64) error {
// XXX: drop goose_db_version table on some minimum version number?
d := conf.Driver.Dialect
if _, err := txn.Exec(d.insertVersionSql(), v, direction); err != nil {
txn.Rollback()
return err
}
return txn.Commit()
}