MigrateDownTo undoes database migrations down to a specific version.
(engine, uri string, p int64)
| 177 | |
| 178 | // MigrateDownTo undoes database migrations down to a specific version. |
| 179 | func MigrateDownTo(engine, uri string, p int64) (err error) { |
| 180 | switch engine { |
| 181 | case database.POSTGRES.String(): |
| 182 | var db *PQDatabase.Postgres |
| 183 | db, err = PQDatabase.New(uri) |
| 184 | if err != nil { |
| 185 | return err |
| 186 | } |
| 187 | defer closeDB(db) |
| 188 | |
| 189 | goose.SetTableName(migrationsTable) |
| 190 | |
| 191 | if err = goose.SetDialect(postgresDialect); err != nil { |
| 192 | return err |
| 193 | } |
| 194 | |
| 195 | goose.SetBaseFS(postgresMigrations) |
| 196 | pool := stdlib.OpenDBFromPool(db.WritePool) |
| 197 | |
| 198 | if err = goose.DownTo(pool, postgresMigrationDir, p); err != nil { |
| 199 | return err |
| 200 | } |
| 201 | |
| 202 | return nil |
| 203 | case database.MEMORY.String(): |
| 204 | return nil |
| 205 | default: |
| 206 | return fmt.Errorf("%s connection is unsupported", engine) |
| 207 | } |
| 208 | } |
| 209 | |
| 210 | // MigrateReset roll back all migrations. |
| 211 | func MigrateReset(engine, uri string) (err error) { |
no test coverage detected