mirror of https://github.com/status-im/migrate.git
2.3 KiB
2.3 KiB
migrate
migrate can be used as CLI or can be imported into your existing Go code.
Available Drivers
- Postgres
- Bash (planned)
Need another driver? Just implement the Driver interface and open a PR.
Usage from Terminal
# install
go get github.com/mattes/migrate
# create new migration
migrate -url="postgres://user@host:port/database" -path="./db/migrations" create
# 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
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
.