mirror of
https://github.com/status-im/migrate.git
synced 2025-02-24 00:38:07 +00:00
80 lines
2.4 KiB
Markdown
80 lines
2.4 KiB
Markdown
# migrate
|
|
|
|
[](https://travis-ci.org/mattes/migrate)
|
|
[](https://godoc.org/github.com/mattes/migrate)
|
|
|
|
|
|
migrate can be used as CLI or can be imported into your existing Go code.
|
|
|
|
|
|
## Available Drivers
|
|
|
|
* [Postgres](https://github.com/mattes/migrate/tree/master/driver/postgres)
|
|
* Bash (planned)
|
|
|
|
Need another driver? Just implement the [Driver interface](http://godoc.org/github.com/mattes/migrate/driver#Driver) and open a PR.
|
|
|
|
|
|
## Usage from Terminal
|
|
|
|
```bash
|
|
# install
|
|
go get github.com/mattes/migrate
|
|
|
|
# create new migration
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations create add_field_to_table
|
|
|
|
# apply all *up* migrations
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations up
|
|
|
|
# apply all *down* migrations
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations down
|
|
|
|
# roll back the most recently applied migration, then run it again.
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations redo
|
|
|
|
# down and up again
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations reset
|
|
|
|
# show current migration version
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations version
|
|
|
|
# apply the next n migrations
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations migrate +1
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations migrate +2
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations migrate +n
|
|
|
|
# apply the *down* migration of the current version
|
|
# and the previous n-1 migrations
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations migrate -1
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations migrate -2
|
|
migrate -url postgres://user@host:port/database -path ./db/migrations migrate -n
|
|
```
|
|
|
|
|
|
## Usage from within Go
|
|
|
|
See http://godoc.org/github.com/mattes/migrate/migrate
|
|
|
|
```golang
|
|
import "github.com/mattes/migrate/migrate"
|
|
|
|
|
|
migrate.Up("postgres://user@host:port/database", "./db/migrations")
|
|
// ...
|
|
// ...
|
|
```
|
|
|
|
## Migrations format
|
|
|
|
```
|
|
./db/migrations/001_initial.up.sql
|
|
./db/migrations/001_initial.down.sql
|
|
```
|
|
|
|
Why two files? This way you could do sth like ``psql -f ./db/migrations/001_initial.up.sql``.
|
|
|
|
|
|
## Credits
|
|
|
|
* https://bitbucket.org/liamstask/goose |