Drop postgres schema on failed migration
If db-move fails, don't leave behind a partially-created postgres DB that will block attempts at future migrations. Only delete schemas created by the current db-move, lest a valid, pre-existing postgres DB exists that shouldn't be deleted.
This commit is contained in:
parent
9928e5ffc2
commit
f15260d1ca
1 changed files with 17 additions and 0 deletions
|
@ -93,6 +93,17 @@ var (
|
|||
}
|
||||
log.Println("created schema")
|
||||
|
||||
ok := false
|
||||
defer func() {
|
||||
if !ok {
|
||||
if err := dropSchema(dest); err != nil {
|
||||
log.Println("error dropping schema in postgres after failed migration:", err)
|
||||
} else {
|
||||
log.Println("dropped schema in postgres after failed migration")
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
if err := moveAccounts(source, dest); err != nil {
|
||||
log.Println("error moving accounts table")
|
||||
return err
|
||||
|
@ -199,6 +210,7 @@ var (
|
|||
log.Println("error deleting sqlite file")
|
||||
return err
|
||||
}
|
||||
ok = true
|
||||
log.Println("sqlite file deleted, your data is now in postgres :)")
|
||||
return nil
|
||||
},
|
||||
|
@ -253,6 +265,11 @@ func createSchema(dest *sql.DB) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func dropSchema(dest *sql.DB) error {
|
||||
_, err := dest.Exec("DROP OWNED BY CURRENT_ROLE CASCADE")
|
||||
return err
|
||||
}
|
||||
|
||||
func moveAccounts(source *sql.DB, dest *sql.DB) error {
|
||||
rows, err := source.Query("SELECT uuid, e164, server FROM accounts")
|
||||
if err != nil {
|
||||
|
|
Loading…
Add table
Reference in a new issue