mirror of https://github.com/pressly/goose.git
delete row on db-down
parent
0d3b571a1d
commit
1dd31552aa
21
dialect.go
21
dialect.go
|
@ -11,6 +11,7 @@ type SQLDialect interface {
|
||||||
createVersionTableSQL() string // sql string to create the db version table
|
createVersionTableSQL() string // sql string to create the db version table
|
||||||
insertVersionSQL() string // sql string to insert the initial version table row
|
insertVersionSQL() string // sql string to insert the initial version table row
|
||||||
updateVersionSQL() string // sql string to update version
|
updateVersionSQL() string // sql string to update version
|
||||||
|
deleteVersionSQL() string // sql string to delete version
|
||||||
dbVersionQuery(db *sql.DB) (*sql.Rows, error)
|
dbVersionQuery(db *sql.DB) (*sql.Rows, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -75,6 +76,10 @@ func (pg PostgresDialect) dbVersionQuery(db *sql.DB) (*sql.Rows, error) {
|
||||||
return rows, err
|
return rows, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (pg PostgresDialect) deleteVersionSQL() string {
|
||||||
|
return fmt.Sprintf("DELETE FROM %s WHERE version_id=?;", TableName())
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// MySQL
|
// MySQL
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
@ -109,6 +114,10 @@ func (m MySQLDialect) dbVersionQuery(db *sql.DB) (*sql.Rows, error) {
|
||||||
return rows, err
|
return rows, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m MySQLDialect) deleteVersionSQL() string {
|
||||||
|
return fmt.Sprintf("DELETE FROM %s WHERE version_id=?;", TableName())
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// sqlite3
|
// sqlite3
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
@ -142,6 +151,10 @@ func (m Sqlite3Dialect) dbVersionQuery(db *sql.DB) (*sql.Rows, error) {
|
||||||
return rows, err
|
return rows, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m Sqlite3Dialect) deleteVersionSQL() string {
|
||||||
|
return fmt.Sprintf("DELETE FROM %s WHERE version_id=?;", TableName())
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// Redshift
|
// Redshift
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
@ -176,6 +189,10 @@ func (rs RedshiftDialect) dbVersionQuery(db *sql.DB) (*sql.Rows, error) {
|
||||||
return rows, err
|
return rows, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rs RedshiftDialect) deleteVersionSQL() string {
|
||||||
|
return fmt.Sprintf("DELETE FROM %s WHERE version_id=?;", TableName())
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
// TiDB
|
// TiDB
|
||||||
////////////////////////////
|
////////////////////////////
|
||||||
|
@ -209,3 +226,7 @@ func (m TiDBDialect) dbVersionQuery(db *sql.DB) (*sql.Rows, error) {
|
||||||
|
|
||||||
return rows, err
|
return rows, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (m TiDBDialect) deleteVersionSQL() string {
|
||||||
|
return fmt.Sprintf("DELETE FROM %s WHERE version_id=?;", TableName())
|
||||||
|
}
|
||||||
|
|
14
migration.go
14
migration.go
|
@ -77,9 +77,17 @@ func (m *Migration) run(db *sql.DB, direction bool) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := tx.Exec(GetDialect().insertVersionSQL(), m.Version, direction); err != nil {
|
|
||||||
tx.Rollback()
|
if direction {
|
||||||
return err
|
if _, err := tx.Exec(GetDialect().insertVersionSQL(), m.Version, direction); err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if _, err := tx.Exec(GetDialect().deleteVersionSQL(), m.Version); err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return tx.Commit()
|
return tx.Commit()
|
||||||
|
|
|
@ -164,9 +164,17 @@ func runSQLMigration(db *sql.DB, scriptFile string, v int64, direction bool) err
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if _, err := tx.Exec(GetDialect().insertVersionSQL(), v, direction); err != nil {
|
|
||||||
tx.Rollback()
|
if direction {
|
||||||
return err
|
if _, err := tx.Exec(GetDialect().insertVersionSQL(), v, direction); err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if _, err := tx.Exec(GetDialect().deleteVersionSQL(), v); err != nil {
|
||||||
|
tx.Rollback()
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return tx.Commit()
|
return tx.Commit()
|
||||||
|
|
Loading…
Reference in New Issue